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 回答