在php中过滤多维数组

时间:2017-07-24 09:50:34

标签: php multidimensional-array

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

请帮我这样做。

2 个答案:

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

它应该有效,