php数组foreach循环数据操作

时间:2016-11-10 11:47:43

标签: php arrays foreach

我有一个脚本,它以数组的形式从MongoDB获取数据并显示结果。该数组有很多记录。示例数组如下:

array(2) {   ["mac"]=> string(17) "2c:33:7a:10:f8:39" int(1478199995) ["duration"]=> int(5) }

array(2) {   ["mac"]=> string(17) "38:0b:40:ad:03:53" int(1478203338) ["duration"]=> int(3) }

array(2) {   ["mac"]=> string(17) "38:0b:40:ad:03:53" int(1478201111) ["duration"]=> int(7) }

array(2) {   ["mac"]=> string(17) "2c:33:7a:10:f8:39" int(1478206709) ["duration"]=> int(7) }

array(2) {   ["mac"]=> string(17) "38:0b:40:ad:03:53" int(1478202821) ["duration"]=> int(6) }

array(2) {   ["mac"]=> string(17) "2c:33:7a:10:f8:39" int(1478202366) ["duration"]=> int(4) }

array(2) {   ["mac"]=> string(17) "38:0b:40:ad:03:53" int(1478205023) ["duration"]=> int(2) } 

我正在显示关于mac地址的记录,如上面的数组mac地址" 2c:33:7a:10:f8:39"有三个记录" 38:0b:40:ad:03:53"有四个,所以我将添加每个记录的持续时间并在浏览器上显示这样

2c:33:7a:10:f8:39          16sec
38:0b:40:ad:03:53          18sec

我这样做的原因是我认为对于5000到6000条记录来说太慢了。

我首先获取数组中的mac地址并删除重复,然后在该数组上运行for循环并为特定mac添加所有持续时间,我的代码如下所示。

<?php
 foreach ($cursor as $document) {
 array_push($arr,$document["mac"]);
 }
 $arr=array_unique($arr);
 $duration=0;

for($i=0;$i<count($arr);$i++){

 foreach ($cursor as $document) {

if($document["mac"]==$arr[$i])
 {

 $duration+=$document['assoc_time'];

 }

 echo $arr[$i]."      ".$duration;
  }

?>

如何快速完成此过程以及如何仅在一个foreach循环中执行此任务。

1 个答案:

答案 0 :(得分:0)

你应该让mongodb做总结。由于缺少您的mdb查询,请参阅https://docs.mongodb.com/v3.2/reference/operator/aggregation/sum/