我需要在$ var中使用date(),如下所示:
$array = array(1 => '2017-10-05', 'February', 'March');
function month($var) {
$date = date('Y-m');
return (stripos($var, $date) !== false);
}
$filtered = array_filter($array, 'month');
var_dump($filtered);
我不明白为什么它返回一个空数组 但是当我这样写的时候,就可以了:
$array = array(1 => '2017-10-05', 'February', 'March');
print_r(array_filter($array, function ($var) { return (stripos($var, '2017-10') !== false); }));
我该如何解决?
答案 0 :(得分:3)
您需要将function ($var) {
分配给变量并将其传递给array_filter,或者您需要为您的函数命名:function checkDate($var) {
。
function checkDate($var) {
$date = date('Y-m');
return (stripos($var, $date) !== false);
}
$filtered = array_filter($array, 'checkDate');
或
$checkDate = function ($var) {
$date = date('Y-m');
return (stripos($var, $date) !== false);
}
$filtered = array_filter($array, $checkDate);
答案 1 :(得分:2)
$array = array(1=> '2017-10-05', 'February', 'March');
function date_func($var){
return (stripos($var, date('Y-m')) !== false);
}
var_dump(array_filter($array, 'date_func'));
如果您不打算重复使用该功能,您应该在过滤器中调用它,如此
$array = array(1=> '2017-10-05', 'February', 'March');
$filtered = array_filter($array, function($v){
return (stripos($v, date('Y-m')) !== false);
});
结果是一样的:
Array
(
[1] => 2017-10-05
)