Переиндексировать массив, используя значение из многомерного массива

У меня есть структура массива, возвращенная из выбора db laravel, которая выглядит следующим образом:

array:219 [▼
  0 => {#236 ▼
    +"mID": "101"
    +"qAVG": "6.44444"
  }
  1 => {#235 ▼
    +"mID": "102"
    +"qAVG": "4.15068"
  }

Помимо перебора всего массива и создания новой переменной, есть ли в PHP функция, которая может генерировать что-то вроде этого:

Array = array(
  101 => array(
           'qAVG' => 6.44444
            ),

  101 => array(
           'qAVG' => 4.15068
            )
)

Нет, невозможно иметь повторяющиеся ключи на одном уровне массива. (101)

mickmackusa 05.10.2020 00:33
Стоит ли изучать 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
1
304
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Да, для этого array_column есть функция, которая позволяет извлекать определенный элемент из многомерного массива и / или индексировать результат по определенному элементу. Так сделайте и то, и другое:

$result = array_column($array, 'qAVG', 'mID');

Если подмассивы содержат больше элементов, и вы тоже хотите их, просто переиндексируйте:

$result = array_column($array, null, 'mID');

Если вы не преобразовали в массив в Laravel, вы можете использовать функцию сбора pluck():

DB::table('foo')->select(['mID', 'qAVG'])->get()->pluck('qAVG', 'mID');

Первый аргумент - это то, что вытаскивать, второй - что использовать в качестве ключей. Он отлично подходит для заполнения раскрывающегося списка опций.

Как и в предыдущем комментарии, если вам нужны другие столбцы:

DB::table('foo')->get()->keyBy('mID');

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