РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1141 of 1392 menu

Метод keyBy

Метод keyBy класса Arr в Laravel служит для изменения ключей элементов массива на основе значений этих элементов или результатов работы переданного замыкания. Метод возвращает новый массив, где ключами выступают указанные значения, а значениями - соответствующие элементы исходного массива. Если в процессе индексации встречаются дублирующиеся ключи, последний элемент с таким ключом перезаписывает предыдущие.

Синтаксис

<?php use Illuminate\Support\Arr; $array = Arr::keyBy($array, $keyBy); ?>

Метод принимает два параметра:

  • $array - исходный массив, который необходимо переиндексировать;
  • $keyBy - строка (ключ элемента) или замыкание (callback), возвращающее значение для нового ключа.

Пример

Переиндексация массива по значению поля 'id':

<?php use Illuminate\Support\Arr; $users = [ ['id' => 1, 'name' => 'John'], ['id' => 2, 'name' => 'Jane'], ['id' => 3, 'name' => 'Doe'] ]; $res = Arr::keyBy($users, 'id'); print_r($res); ?>

Результат выполнения кода:

[ 1 => ['id' => 1, 'name' => 'John'], 2 => ['id' => 2, 'name' => 'Jane'], 3 => ['id' => 3, 'name' => 'Doe'] ]

Пример

Использование замыкания для формирования ключа:

<?php use Illuminate\Support\Arr; $items = [ ['title' => 'first', 'status' => 'active'], ['title' => 'second', 'status' => 'inactive'], ['title' => 'third', 'status' => 'active'] ]; $res = Arr::keyBy($items, function ($item) { return $item['title'] . '_' . $item['status']; }); print_r($res); ?>

Результат выполнения кода:

[ 'first_active' => ['title' => 'first', 'status' => 'active'], 'second_inactive' => ['title' => 'second', 'status' => 'inactive'], 'third_active' => ['title' => 'third', 'status' => 'active'] ]

Пример

Обработка дублирующихся ключей (последнее значение перезаписывает предыдущие):

<?php use Illuminate\Support\Arr; $products = [ ['category' => 'a', 'name' => 'Phone'], ['category' => 'b', 'name' => 'Laptop'], ['category' => 'a', 'name' => 'Tablet'] ]; $res = Arr::keyBy($products, 'category'); print_r($res); ?>

Результат выполнения кода:

[ 'a' => ['category' => 'a', 'name' => 'Tablet'], 'b' => ['category' => 'b', 'name' => 'Laptop'] ]

Пример

Работа с простым индексным массивом:

<?php use Illuminate\Support\Arr; $numbers = ['one', 'two', 'three']; $res = Arr::keyBy($numbers, function ($value) { return strtoupper($value); }); print_r($res); ?>

Результат выполнения кода:

[ 'ONE' => 'one', 'TWO' => 'two', 'THREE' => 'three' ]

Смотрите также

  • метод keyBy коллекций,
    который выполняет аналогичную операцию для коллекций
  • метод pluck,
    который извлекает значения указанного ключа из массива
  • метод get,
    который получает значение из массива по указанному ключу
  • метод only,
    который возвращает только указанные ключи из массива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить