我有一个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;
。
请帮我这样做。
答案 0 :(得分:1)
您需要使用:
$punch_array_formatted = array_filter(
$array_formatted,
function($array) use ($last_read_datetime) { // <- "use" is the key
return strtotime($array['DateTime']) >= $last_read_datetime;
}
);
这使匿名函数可以访问变量。
答案 1 :(得分:1)
您需要使用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;
});
它应该有效,