I am trying to filter a php array by comparing a field containing a unix date string ("start-unix-date") with the current unix time (simplified in this example as "15"). I want to keep only items where the unix date is in the future (>= than present).
Here is a simplified version of my code - based on this filtering method:
$my_array = array(
array( 'start-date-unix' => '20' ),
array( 'start-date-unix' => '10')
);
$unix_now = 15;
function filter_future($var) {
return (is_array($var) && $var['start-date-unix'] >= $unix_now)
}
$filtered_array = array_filter($my_array, "filter_future");
var_dump($filtered_array);
The expected result:
The $filtered_array should keep only the item with a "start-date-unix" value of 20.
Actual result:
That filter doesn't do anything, every value is accepted. The $filtered_array still contains both items.
What works:
In the filter_future, if I enter the number (15) instead of the $unix_now variable, it works as expected: only the "20" item is kept.
So I suspect that there's an issue with $unix_now being a string vs an integer. I tried many methods of enforcing it being an integer but nothing seems to work :(