Есть ли способ вернуть двухмерный массив из SQL-запроса? Подобно..
"SELECT id, x, y, z FROM test"
.. и вернуть его как id => x, y, z? Я мог бы сделать цикл и создать второй массив, но я полагаю, что это дополнительная работа, которую мне, возможно, не придется делать. Просто не знакомы с SQL прямо сейчас.
В PHP SQL-запросы будут возвращать только наборы результатов. Строки и столбцы.
Вам понадобится еще один цикл, чтобы обработать его в массив, к которому вы обращаетесь. Это не проблема и должно быть частью вашей оболочки базы данных, если вы ее часто используете.
$result = mysql_query(...); $aData = array(); while($row = mysql_fetch_assoc($result)) $aData[$row['id']] = array($row['x'], $row['y'], $row['z']);
Ответ на ваш вопрос – нет, нет никакого способа сделать это.
Реляционные базы данных представляют собой, по существу, двумерные структуры. Они могут представлять отношения между структурами, но все данные хранятся в плоском, двумерном виде и запрашиваются и возвращаются как таковые. К сожалению, нет концепции структур данных так же, как у них есть языки программирования. Любой результат, полученный из SQL-запроса, всегда будет представлять собой скалярный набор данных полей и значений. PHP делает это немного проще, возвращая имена столбцов в виде ключей массива, а значения полей – как значения массива, но это насколько возможно.
Чтобы вывести результаты в многомерный массив, вам нужно будет сделать это с помощью PHP после того, как вы получите результаты из базы данных.
SQL уже возвращает 2D-набор данных – несколько строк, каждый из которых имеет одинаковые поля в строке. Когда вы выберете SELECT id, x, y, z FROM test
, он вернет значения id
, x
, y
и z
для каждой строки test
. id
связан с x
, y
и z
потому что он возвращается в той же строке.
Если вам нужна структура данных PHP, которая отображает значения id
в x
, y
и z
, вам нужно будет сделать инструкцию SELECT и построить эту структуру данных из набора результатов.