Разбивание на блоки (от 10 до 50 строк).
Комменты
Более менее осмысленные имена переменных
Отступы
Но все равно, как то глаза устают анализировать что написано. Вот пример. Тут все понятно, но
работать все равно тяжко…
function($match) {
$year = date('Y-');
if (sizeof($match) == 3) {
return $year . $match[2] . '-' . $match[1] . ',';
}
//Если совпадают месяцы, то все отлично
if ($match[3] == $match[6]) {
if ($match[1] + 1 == $match[4]) {
return implode(',', array( $year . $match[3] . '-' . $match[2], $year . $match[6] . '-' . $match[5] ));
}
else {
$range = range($match[2], $match[5]);
foreach ($range as $k => &$v) {
$v = $year . $match[3] . '-' . $v;
}
return implode(',', $range);
}
}
//А если не совпали вычисляем…
//Переводим во внутренний формат все входные данные.
$begin_date = date('Y-m-j', strtotime($year . $match[3] . '-' . $match[2]));
$end_date = date('Y-m-j', strtotime($year . $match[6] . '-' . $match[5]));
$return = $begin_date . ',';
for ($i = 1; true; $i++) {
$curr_date = date('Y-m-j', strtotime($begin_date . '+' . $i . 'days'));
if ($curr_date == $end_date) {
$return .= $curr_date;
break;
}
$return = $return . $curr_date . ',';
}
return $return;
}