我在数组中有一些数据,我将对其进行过滤以获取所需的数据。
在这个数组中,我想获取使用某些条件的数组中的最新数据
我有一个数组
{
"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] 删除。
我来说两句