从二维数组中删除日期时间值早于给定日期时间值的行

问题描述 投票:0回答:2

我有一个如下的 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;

php arrays multidimensional-array filtering date-comparison
2个回答
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
投票

您需要使用

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;
});

它应该有效,

© www.soinside.com 2019 - 2024. All rights reserved.