#php
#php
Вопрос:
У меня есть оператор sql, который возвращает количество записей, каждая из которых имеет 10 атрибутов. Как я могу получить данные и поместить их в 2D массив. В настоящее время я делаю это :
while($row1 = mysql_fetch_array($result1))
{
echo $row1[0][1]; //There is an error here
}
Является ли $ row1 2D массивом? (Это должно быть потому, что я получаю n * m результатов). Если $ row1 является 2d-массивом, то разве я не должен иметь доступ к $row [0] [1]?
Комментарии:
1. что произойдет, если вы print_r в $row1?
Ответ №1:
массив mysql_fetch возвращает одномерный массив, объединяющий индексированные ключевые значения одной строки данных из результатов вашего запроса. например, выполнение
ВЫБЕРИТЕ field1, field2, field3 ИЗ sometable
и выполнение mysql_fetch_array для результата даст вам массив, который выглядит как:
$row1 = array(
0 => 'value of field1',
1 => 'value of field2',
2 => 'value of field3',
'field1' => 'value of field1'
'field2' => 'value of field2',
'field3' => 'value of field3'
)
Если вы хотите обратиться ко всему результирующему набору как к одному массиву, вам придется сначала извлекать каждую строку и добавлять ее в этот массив:
$data = array();
while($row1 = mysql_fetch_array($result)) {
$data[] = $row1;
}
Что позволит вам сделать $data[0][1]
(2-е поле [1] 1-й записи [0])
Ответ №2:
Из документов:
Извлеките строку результата в виде ассоциативного массива, числового массива или обоих
Если mysql_fetch_array
восстанавливается 1 строка данных, каким вы ожидаете второе измерение?
Прежде всего вам нужно проверить, какой массив вы получаете, тогда вы сможете понять, почему ваши ключи недействительны. Попробуйте использовать print_r
или var_dump
для проверки $row1.
Ответ №3:
$row1
одновременно содержит только одну запись, поэтому это обычный одномерный массив.
Если ваш запрос возвращает
a b c
d e f
На первой итерации цикла while row1
выполняется a b c
, а на второй итерации выполняется d e f
, оба одномерных массива.
Комментарии:
1. как я могу изменить его на 2d массив?
2. Смотрите Ответ Марка Б. О том, как превратить его в 2-D массив
Ответ №4:
$row1 — это одномерный массив (одна запись), в вашем случае содержащий 10 значений.
Поскольку код повторяет оператор while, $row1 представляет каждую запись.
обратитесь к документации здесь: http://ca.php.net/manual/en/function.mysql-fetch-array.php