Как группировать массив, затем повторять - PullRequest
0 голосов
/ 05 июля 2018

У меня проблемы с моим проектом.

Во-первых, у меня есть такие данные: 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

Из приведенного выше результата я не могу перебрать данные (я хочу перебирать с начала). Итак, я хочу иметь возможность перебирать данные, что-то не так с моей группой по функции массива? Если вы понимаете, чего я хочу, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы можете использовать коллекции для манипулирования массивами или объектами Traversable. Группировка в коллекции CakePHP

use Cake\Collection\Collection;

private function _group_by($array, $key) {
    $collection = new Collection($array);
    return $collection->groupBy('water_id')->toArray();
}
0 голосов
/ 05 июля 2018

Вы пометили это как приложение 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.
    }
});

В зависимости от ваших обстоятельств, map или transform могут быть более подходящими, чем each.

...