2016-10-19 4 views
0

Я нахожусь в некоторой проблеме. У меня есть две анонимные функции, а другая - другая. Но когда функция $fCompleteDate вызывается в функции $fFindAndCreateDateНеустранимая ошибка: имя функции должно быть строкой с анонимной функцией

Я получаю фатальную ошибку:

Function name must be a string.

Функция $fFindAndCreateDate вызывается позже в сценарии.

Я понятия не имею, в чем проблема.

$fCompleteDate = function($sDate) 
{ 
    $sDate = str_replace('/', '-', $sDate); 
    return str_repeat('01-', max(0, 2 - substr_count($sDate, '-'))) . $sDate; 
}; 

$fFindAndCreateDate = function($aStruct) 
{ 
    $aDateStructNames = array('', 'Remark', 'Formatted', 'Extra'); 
    foreach($aDateStructNames as $sDateStructName) 
    { 
    echo $fCompleteDate('2001'); 
    echo 'a : '. $fCompleteDate($aStruct['startDate'.$sDateStructName]); 
    echo 'b : '. $fCompleteDate($aStruct['endDate'.$sDateStructName]); 
    } 
}; 
+1

Это не действует функция PHP. Функция JS и функция PHP разные. –

+0

Я не знаю, почему PHP назвал этот способ анонимным, а ничто не анонимно в этом объявлении. –

ответ

2

Я вижу, что вы используете анонимные функции, поэтому я обновил свой ответ.

Вы должны указать, что вторая функция использовать первый, как это:

$fFindAndCreateDate = function($aStruct) use ($fCompleteDate) { 
.... 
} 
+0

Почему функция '$ fFindAndCreateDate' называется правильно? –

+0

@KevinKamer Извините за это, я обновил свой ответ для анонимных функций. Вам нужно только добавить 'use ($ fCompleteDate)' ко второй функции. –

Смежные вопросы