Массив неправильно назначает идентификаторы из базы данных

В настоящее время у меня есть оператор select, создающий массив и зацикленный для значений. Он возвращает правильные значения, но не назначает правильное назначение.

Итак, я рассматриваю местоположения как ключи массива, что работает правильно, но, например, в приведенном ниже массиве Office 1 должен иметь массив, которому ID 1 назначен Room Main, а ID 2 назначен Room Extra, но вместо этого display_id находится в массиве за пределами отображать имена.

Мой запрос:

SELECT l.id , location_name, d.id as display_id, display_name, location_id
    FROM locations l
    inner join displays d
    ON d.location_id = l.id;";

Мой код:

$displayResult = $mysqlConn->query($getDisplays);

    $displayNames = array();
    foreach($displayResult as $subArray) {
      if (!array_key_exists($subArray['location_name'], $displayNames)) {
        $displayNames[$subArray['location_name']] = array();

      }
        $displayNames[] = $subArray['display_id'];
        $displayNames[$subArray['location_name']][] = $subArray['display_name'];

    }

Это в настоящее время сбрасывает этот массив:

Array
(
[Office 1] => Array
    (
        [0] => Room Main
        [1] => Room Extra
    )

[0] => 1
[1] => 2
[Office 2] => Array
    (
        [0] => Room Conference
        [1] => Room Break
    )

[2] => 3
[3] => 4

Мне просто нужно назначить display_id для display_name, потому что я создаю ссылки для каждого display_name и пытаюсь сохранить display_id в качестве значения URL для каждого из них.

Что именно я делаю не так?

Можете ли вы поделиться примером желаемого результата?

BenM 19.07.2018 17:45
Стоит ли изучать 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 и хотите разрабатывать...
0
1
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я полагаю, ваш правильный цикл должен быть:

foreach($displayResult as $subArray) {
    if (!array_key_exists($subArray['location_name'], $displayNames)) {
        $displayNames[$subArray['location_name']] = array();

    }
    // here you add `display_name` under key `display_id`
    $displayNames[$subArray['location_name']][$subArray['display_id']] = $subArray['display_name'];
}

Да, это прекрасно! Большое спасибо, я подумал, что должен установить его вне подмассива, но это закончилось бы созданием дополнительного массива.

Geoff_S 19.07.2018 17:50

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