我正在进行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"
}
}
任何人都可以告诉我为什么使用字符串变量失败并使用字符串文字工作?
答案 0 :(得分:1)
不要禁用错误报告,否则您会收到$date_formatted
未定义的通知。
$date_formatted
。您可以使用use
:
$current_term = array_filter($all_terms, function($a) use ($date_formatted) {
if(substr($a->EndDate, 0, 10) === $date_formatted) {
return true;
}
return false;
});
找到更多信息