设置条件时如何获取最后一个元素数组(删除重复数据)

伯索·乔里斯

我在数组中有一些数据,我将对其进行过滤以获取所需的数据。

在这个数组中,我想获取使用某些条件的数组中的最新数据

我有一个数组

{

    "items": [
        {
            "idarchive": "1",
            "name": "nb_uniq_visitors",
            "idsite": "1",
            "date1": "2016-07-10",
            "date2": "2016-07-10",
            "period": "1",
            "ts_archived": "2016-07-10 17:32:55",
            "value": "10"
        },
        {
            "idarchive": "2",
            "name": "nb_uniq_visitors",
            "idsite": "1",
            "date1": "2016-07-11",
            "date2": "2016-07-11",
            "period": "1",
            "ts_archived": "2016-07-10 17:32:56",
            "value": "30"
        },
        {
            "idarchive": "3",
            "name": "nb_uniq_visitors",
            "idsite": "1",
            "date1": "2016-07-11",
            "date2": "2016-07-11",
            "period": "1",
            "ts_archived": "2016-07-10 18:11:32",
            "value": "50"
        },
        {
            "idarchive": "4",
            "name": "nb_uniq_visitors",
            "idsite": "1",
            "date1": "2016-07-12",
            "date2": "2016-07-12",
            "period": "1",
            "ts_archived": "2016-07-11 10:02:44",
            "value": "15"
        },
        {
            "idarchive": "5",
            "name": "nb_uniq_visitors",
            "idsite": "1",
            "date1": "2016-07-12",
            "date2": "2016-07-12",
            "period": "1",
            "ts_archived": "2016-07-11 11:12:05",
            "value": "20"
        },
    ]
}

在数组数据中,我有一个日期字段1是执行过滤的关键。

在数组内部,我想获取last array``。他们向我保证我会得到这样的数据

{

    "items": [
        {
            "idarchive": "1",
            "name": "nb_uniq_visitors",
            "idsite": "1",
            "date1": "2016-07-10",
            "date2": "2016-07-10",
            "period": "1",
            "ts_archived": "2016-07-10 17:32:55",
            "value": "10"
        },
        {
            "idarchive": "3",
            "name": "nb_uniq_visitors",
            "idsite": "1",
            "date1": "2016-07-11",
            "date2": "2016-07-11",
            "period": "1",
            "ts_archived": "2016-07-10 18:11:32",
            "value": "50"
        },
        {
            "idarchive": "5",
            "name": "nb_uniq_visitors",
            "idsite": "1",
            "date1": "2016-07-12",
            "date2": "2016-07-12",
            "period": "1",
            "ts_archived": "2016-07-11 11:12:05",
            "value": "20"
        },
    ]
}

一个数据代表同一日期的所有数据。

我只能对相同的数据进行过滤,但尚未达到特定条件。这是我的代码

$output = array();
array_walk_recursive($myArrayDataAbove, function($item, $key) use (&$output){
    $output[$key] = isset($output[$key]) ?  $item + $output[$key] : $item;
});
echo '<pre>';
var_dump($output);

谢谢

吉布勒斯

因此,您的商品位于名为$ items的变量中。

在要存储最后结果的位置创建第二个变量:

$lastItems = [];

循环浏览您的项目以检查日期:

foreach ($items as $item) {
    // get the date
    $itemDate = $item['date1'];

    // if the date does not exist in your lastItems array, just create it :
    if (!isset($lastItems[$itemDate])) {
        $lastIems[$itemDate] = $item;
    } else {
        // the date exists, lets compare it to the item :
        $itemArchivedDate = new \DateTime($item['ts_archived']);
        $lastArchivedDate = new \DateTime($lastItems[$itemDate]['ts_archived']);

        // only if the current item archive date is greater than the stored one, replace it :
        if ($itemArchivedDate > lastArchivedDate) {
            $lastIems[$itemDate] = $item;
        }
    }
}

到这里,最后一个元素存储在$ lastItems变量中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从元素数组中删除一个元素

如何删除bash中数组的最后一个元素?

如何创建新的连续元素数组而又不遗漏最后一个元素?

如何使用解构获取数组的最后一个元素

如何获取Ruby中数组的最后一个元素?

如何获取猫鼬的数据在数组中的最后一个元素?

获取数组的最后一个元素?

使用重复数据删除一个Java集合

如何添加一个唯一值以区分Swift数组中的重复数据?

如何在MPI中发送每个处理器的最后一个元素数组

如何获取数组中的下几个元素,但在传递最后一个元素时跳回到开头?

声明一个数据元素数组,以便在画布上获取散点

当数组达到特定长度时,删除JavaScript数组的最后一个元素

当数组的总和大于特定数字时删除数组的最后一个元素

.push在循环中创建的数组是正确的长度,但仅在重复时推送最后一个元素

添加第一个元素或删除最后一个元素时触发事件的设置

以firestore数据的角度获取数组的长度和每个数组的最后一个元素

在Swift中使用条件时删除集合的最后一个元素

获取数组的最后一个元素以从中删除逗号

在比较当前元素和下一个元素时,如何迭代数组的最后一个元素?

删除数组中长度小于数字 Pyspark 数据帧的最后一个元素

如何仅返回数组的最后一个元素而不获取所有元素

如何获取数组的最后一个元素并显示其余元素?

一旦数组中的最后一个元素满足条件,如何使循环结束?

从整数中删除重复数字组中的一个重复数字以获取最大值

展开数组并返回最后一个元素匹配条件

C ++删除动态数组的最后一个元素

Ada:获取数组中的最后一个元素时出现前缀问题

获取数据库结果后,从数组中删除最后一个逗号