1

コードは完璧に機能しますが、私は自分自身を繰り返しているので(プログラミング中は避けたいです)、これをもっと短く/もっと良く書くことができるかどうか疑問に思いました。

$start = getLocaleDate($item[0]['start_day']);
$start = $start['day_int'] . ' ' . $start['month_string'];
if ($item[0]['start_houre'] !== '00:00:00') {
    $houre = stripLeadingZero(substr($item[0]['start_houre'], 0, 2));
    $minute = substr($item[0]['start_houre'], 3, 2);
    $start .= ' at' . $houre . 'u' . $minute;
}

$end = getLocaleDate($item[0]['end_day']);
$end = $end['day_int'] . ' ' . $end['month_string'];
if ($item[0]['end_houre'] !== '00:00:00') {
    $houre = stripLeadingZero(substr($item[0]['end_houre'], 0, 2));
    $minute = substr($item[0]['end_houre'], 3, 2);
    $end .= ' at' . $houre . 'u' . $minute;
}
4

2 に答える 2

4

アイテムと使用するキーを渡す関数を作成できますか

function your_function($item, $key) {
  $h = $item[$key.'_houre'];
  $time = getLocaleDate($item[$key. '_day']);
  $time = $end['day_int'] . ' ' . $end['month_string'];
  if ($h !== '00:00:00') {
    $houre = stripLeadingZero(substr($h , 0, 2));
    $minute = substr($h , 3, 2);
    $time .= ' at' . $houre . 'u' . $minute;
    return $time;
  }

}

your_function($item[0], 'end');
your_function($item[0], 'start');
于 2012-11-07T14:17:58.103 に答える
4

機能を変更せずに、関数にすることができます。

function getTime($item, $which) {
    $time = getLocaleDate($item[0][$which . '_day']);
    $time = $time['day_int'] . ' ' . $time['month_string'];
    if ($item[0][$which . '_houre'] !== '00:00:00') {
        $houre = stripLeadingZero(substr($item[0][$which . '_houre'], 0, 2));
        $minute = substr($item[0][$which . '_houre'], 3, 2);
        $time .= ' at' . $houre . 'u' . $minute;
    }
    return $time;
}

$start = getTime($item, 'start');
$end = getTime($item, 'end');

* ただし、このコードはエラー チェック/防止を行わないため、 にインデックスがない場合はエラーが発生することに注意して0ください$item( $item[0]['start_day']$item[0]['end_day']なども同様です)。if (!isset($item[0])) return '';単純なケースを処理するために、問題がある場合は関数の先頭に追加できます。

于 2012-11-07T14:18:46.230 に答える