2016-10-19 5 views
0

私はちょっとした問題を抱えています。 私は2つの匿名関数を持ち、1つは匿名関数を呼び出します。 機能$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申し訳ありませんが、匿名機能の回答を更新しました。 2番目の関数に 'use($ fCompleteDate)'を追加するだけです。 –

関連する問題