Коллекции Laravel: многомерный массив, Группировка по ключам и уникальным значениям

Как сделать следующее с коллекции laravel

У нас есть такой массив: Предположим, мы заранее не знаем мульти ключей

$input =[
            ['name' =>'John McClane','age'=>'40' ],
            ['name' =>'John McClane','age'=>'50' ],
            ['name' =>'Hans Gruber','age'=>'40' ],
            ['name' =>'Hans Gruber','age'=>'50' ],
            ['name' =>'Holly McClane','age'=>'20' ],
            ['name' =>'Holly McClane','age'=>'49' ],
        ];


$output =[
            'name' => [
                'John McClane',
                'Hans Gruber',
                'Holly McClane'
            ],
            'age' =>[
                '40',
                '50',
                '20',
                '49'
            ]
        ];

Обновлять: @Felippe Duarte добавил простую версию PHP о том, как это сделать.

 $output =[];
 foreach($input as $arr){
            $keys = array_keys($arr);
            foreach ($keys as $key) {
                $output[$key] =  array_unique(array_column($input, $key));
            }
        }

Просто заменяю array_unique(array_column($input, $key));
с $input->pluck($key)->toArray(); не очень интересно.

Что мне интересно, есть ли аккуратный способ сделать это полностью с помощью коллекции laravel в одной строке?

Группируйте по многомерным ключам с уникальными значениями.

Ваше здоровье!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
868
1

Ответы 1

С обычным PHP вы можете использовать array_column и array_unique:

$output = [
    'name' => array_unique(array_column($input, 'name')),
    'age' => array_unique(array_column($input, 'age')),
];

С коллекцией вы можете использовать щипать и уникальный:

$output = [
    'name' => $input->pluck('name')->unique(),
    'age' => $input->pluck('age')->unique(),
];

Если вы не знаете ключей, используйте array_keys или ключи (), получите ключи и повторите описанный выше процесс:

$keys = array_keys($input); //$input->keys();

foreach ($keys as $key) {
    $output[$key] = $input->pluck($key)->unique();
}

Да, это очень впечатляет, Фелиппе, спасибо .. Я отредактировал свой пост после твоего ответа. Что делать, если вы не знаете ключей. Но я понял. Спасибо друг

Paolo_Mulder 18.12.2018 16:19

Спасибо, Фелиппе, но я получил это с помощью простого php. Отдельно для использования отваги и уникальности. Мне было интересно, есть ли в laravel метод для создания этого в одной строке. $ collection-> groupBy (что-то) -> unique (something). Но спасибо за ваше время

Paolo_Mulder 18.12.2018 16:44

Другие вопросы по теме