I'm making an API call to get a multidimensional array. I'm then using array_filter to try to get the specific array that has a specific end date. The code I'm using is below:
$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>";
That code returns this.
string(10) "2017-05-25"
array(0) {
}
If I instead use a string literal in the anonymous function...
$current_term = array_filter($all_terms, function($a) {
if(substr($a->EndDate, 0, 10) === '2017-05-25') {
return true;
}
return false;
});
I get this.
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"
}
}
Can anyone tell me why using the string variable is failing and using the string literal is working?