我有一个如下的 php 数组。
$array_formatted = Array
(
[0] => Array
(
[UserID] => 20205
[DateTime] => 2017-02-22 07:02
)
[1] => Array
(
[UserID] => 10021
[DateTime] => 2017-02-21 07:03
)
[2] => Array
(
[UserID] => 10027
[DateTime] => 2017-02-23 07:04
)
)
我想从
last_read_datetime
中删除 $array_formatted
之前的数据。所以我写了以下代码。
$last_read_datetime = strtotime($last_read_data[0]->read_datetime);
//remove data before last read data
$punch_array_formatted = array_filter($array_formatted, function($array) {
return strtotime($array['DateTime']) >= $last_read_datetime;
});
但这显示错误
未定义变量:第
行中的last_read_datetime
。return strtotime($array['DateTime']) >= $last_read_datetime;
您需要使用:
$punch_array_formatted = array_filter(
$array_formatted,
function($array) use ($last_read_datetime) { // <- "use" is the key
return strtotime($array['DateTime']) >= $last_read_datetime;
}
);
这使得匿名函数可以访问该变量。
您需要使用
use
语句来获取另一个范围内的值。
$last_read_datetime = strtotime($last_read_data[0]->read_datetime);
$punch_array_formatted = array_filter($array_formatted, function($array) use(last_read_datetime) {
return strtotime($array['DateTime']) >= $last_read_datetime;
});
它应该有效,