Я задал связанный вопрос, прежде чем потерял свой логин - PHP Версия 5.2.14 / Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный T_FUNCTION, ожидание ')' - но это проблема "всего".
Мне трудно понять, как преобразовать эту функцию (полученную где-то на SO) для работы с PHP 5.2.14 (который, как мне сообщили люди, не поддерживает анонимные функции). Я попробовал несколько вариантов изменения кода, чтобы он работал с array_map (), но я не могу понять, как все работает!
Вся функция вставлена ниже, но на PHP 5.2.14 жалуются только те области, на которые жалуется ..
function convertGeneralAvailabilityTime($date,$from_timezone,$from_timebegin, $from_timeend, $to_timezone)
{
$tz1 = new DateTimezone($from_timezone);
$datetime1 = new DateTime("$date $from_timebegin", $tz1);
$datetime2 = new DateTime("$date $from_timeend", $tz1);
$convertedAvail = array(
array($datetime1, $datetime2),
);
$tz2 = new DateTimezone($to_timezone);
//convert periods:
// ISSUE_START
$times = array_map(
function (array $p) use ($tz2) {
$res = array();
foreach ($p as $d) {
$res[] = $d->setTimezone($tz2);
}
return $res;
},
$convertedAvail
);
// ISSUE_END
$res = array();
foreach ($times as $t) {
$t1 = reset($t);
$t2 = next($t);
if ($t1->format("d") == $t2->format("d")) {
$res[$t1->format("l")][] = $t1->format("g:i a") . " to ".
$t2->format("g:i a");
}
else {
$res[$t1->format("l")][] = $t1->format("g:i a") . " to 11:59 pm";
$res[$t2->format("l")][] = "12:00 am to ". $t2->format("g:i a");
}
}
return $res;
}