2016-03-06 1 views
0

Допустим, я запрашиваю свою базу данных, и я получаю следующий результатPHP запрос для возвращения базы данных в виде массива

+---+---+-------+ 
| N | M | score | 
+---+---+-------+ 
| 0 | 2 | 14 | 
| 1 | 0 | 22 | 
+---+---+-------+ 

После этого $res = $db->query($query); Есть в любом случае, чтобы сохранить эту информацию в массиве. Например, я пытался сделать это

 $array = array();  
     while ($row = mysql_fetch_array($res, MYSQL_NUM)) { 
      array_push($array, array($row[0], $row[1], $row[2])); 
     } 

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

$row[0] = 0 , $row[1] = 2, $row[2] = 14 для первой строки и

$row[0] = 1, $row[1] = 0, $row[2] = 22 для второго ряд

Пожалуйста, поправьте меня, если я ошибаюсь, потому что я уверен, что я не прав: O

EDIT: Причина, почему я спрашиваю, что содержит строка $ row, заключается в том, что я хотел бы хранить каждую строку в массиве для формирования многомерного массива. Например, {"E":[[0,1,86],[1,0,96]]} после json_encode. Поэтому, чтобы сделать это, мне нужно вытолкнуть каждую строку в виде массива в другой массив, то есть перенести первую строку в виде массива [0,1,86] в $array, а затем нажать вторую строку как массив [1,0,96]. Я сомневаюсь, что я смогу добиться этого, сделав ассоциативный массив. еще раз исправьте меня, если я ошибаюсь.

+0

'в то время как ($ строка = mysql_fetch_array ($ Рез, MYSQL_NUM)) {$ new [] = $ row;} ' –

+0

@ Дагон позаботится объяснить? – CHEWWWWWWWWWW

+0

попробуйте посмотреть, что получилось: 'print_r ($ new)' –

ответ

0

Ваш код по существу прекрасен (mysql_fetch_array - опечатка, я думаю).

Единственное примечание: вы должны инициализировать $array перед циклом while, в противном случае ваш array_push потерпит неудачу.

Итак, ваш код работает, но решение, представленное в комментариях, лучше, потому что оно короче и эффективнее: с mysql_fetch_array вы уже получаете нужный массив, поэтому просто добавьте его в свой массив без указания каждой клавиши , Кроме того, согласно php docs, синтаксис $array[] = более эффективен, чем array_push(), если добавить к массиву только один элемент.

$array = array(); 
while($row = mysqli_fetch_array($res, MYSQL_NUM)) 
{ 
    $array[] = $row; 
} 

Если вы предпочитаете, вы можете получить тот же результат с помощью mysqli_fetch_all():

$array = mysqli_fetch_all($res, MYSQLI_NUM); 

[Edit:] Очевидно, что последние два решения будут работать только если вы хотите получить все поля, возвращаемые запрос.

[Edit 2:] Для того, чтобы получить JSON в нужный формат, просто добавьте эту строку в конце кода:

$json = json_encode(array('E' => $array)); 
+0

, пожалуйста, прочитайте мое редактирование! :) – CHEWWWWWWWWWW

+0

@CHEWWWWWWWWWW Да, он работает и для вашего json. См. Мой отредактированный ответ, чтобы увидеть пример. – fusion3k

+0

, так что, видимо, я сделал это, и это сработало, как вы сказали, массив [] и array_push действуют одинаково, но однажды я это сделал, и он не работал. я, вероятно, не сохранил файл правильно или что-то в этом роде. '' $ array = array(); \t в то время как ($ строка = mysqli_fetch_array ($ разреш, MYSQL_NUM)) \t { array_push ($ массив, $ строка \t); \t} ' – CHEWWWWWWWWWW

Смежные вопросы