如何对数组进行分组然后进行迭代

时间:2018-07-04 21:12:38

标签: arrays cakephp cakephp-3.0

我的项目有麻烦。

首先,我有一个类似这样的数据:https://jsoneditoronline.org/?id=c6d15407962e4d1b986435ad3c283b4e

然后我使用此分组数据:

private function _group_by($array, $key) {
    $new = [];
    foreach ($array as $value) {
        $new[$value[$key]][] = $value;
    }

    return $new;
}
  

$ key ='water_id'

之后,结果如下:https://jsoneditoronline.org/?id=72991d45938c49a38900703feb3a60e7

从上面的结果中,我无法迭代数据(我想从开始就进行迭代)。所以,我想能够迭代数据,我的group by array函数有问题吗?如果您了解我想要的,请提供帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用集合来操纵数组或可遍历对象。 Grouping in CakePHP's Collection

use Cake\Collection\Collection;

private function _group_by($array, $key) {
    $collection = new Collection($array);
    return $collection->groupBy('water_id')->toArray();
}

答案 1 :(得分:0)

您将其标记为Laravel应用,对吗?检出收藏集:https://laravel.com/docs/5.6/collections

$result = null;
collect($array)->groupBy($keyName)->each(function ($group, $key) use (&$result) {
    foreach ($group as $element => $index) {
        //Do something to $result.
    }
});

根据您的情况,maptransform可能比each更合适。