В настоящее время у меня есть оператор 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 для каждого из них.
Что именно я делаю не так?






Я полагаю, ваш правильный цикл должен быть:
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'];
}
Да, это прекрасно! Большое спасибо, я подумал, что должен установить его вне подмассива, но это закончилось бы созданием дополнительного массива.
Можете ли вы поделиться примером желаемого результата?