0
多次元配列を取得するAPI呼び出しを行っています。私は特定の終了日を持つ特定の配列を取得しようとするarray_filterを使用しています。私が使用しているコードは以下の通りです:文字列変数を使用すると、匿名関数で文字列の比較に失敗する
$api_call = "287/terms";
$terms_json = curl_exec(makeAPIConnection($api_call));
$all_terms = json_decode($terms_json);
if(!is_array($all_terms)) { return NULL; }
// Getting current date and formatting for comparison
$current_date = date_create('2017-05-25');
$date_formatted = date_format($current_date, 'Y-m-d');
// Getting the current term
$current_term = array_filter($all_terms, function($a) {
if(substr($a->EndDate, 0, 10) === $date_formatted) {
return true;
}
return false;
});
echo "<pre>";
var_dump($date_formatted) . "<br";
var_dump($current_term) . "<br";
echo "</pre>";
このコードはこれを返します。
string(10) "2017-05-25"
array(0) {
}
私が代わりに匿名関数で文字列リテラルを使用している場合...
$current_term = array_filter($all_terms, function($a) {
if(substr($a->EndDate, 0, 10) === '2017-05-25') {
return true;
}
return false;
});
私はこれを取得。
string(10) "2017-05-25"
array(1) {
[3]=>
object(stdClass)#4 (7) {
["AcadSessionId"]=>
int(287)
["Code"]=>
string(4) "Qtr4"
["Description"]=>
string(20) "Quarter 4/Semester 2"
["EndDate"]=>
string(19) "2017-05-25T00:00:00"
["Id"]=>
int(729)
["Name"]=>
string(20) "Quarter 4/Semester 2"
["StartDate"]=>
string(19) "2017-03-13T00:00:00"
}
}
文字列変数の使用に失敗し、文字列リテラルが動作している理由を教えていただけますか?