многомерные массивы в php? - PullRequest
       3

многомерные массивы в php?

0 голосов
/ 08 августа 2011

У меня проблема с массивами в PHP. Итак, давайте посмотрим: у меня есть таблица «Пользователи» в базе данных с такими полями: «имя, фамилия, возраст, рейтинг». Количество пользователей почти 100. Мне нужно получить их всех из базы данных, разместить их в массиве, кодировать их с помощью JSON end show. Итак, я полагаю, мне нужно сделать следующее:

  1. Получить одну строку из БД.
  2. Добавить все данные в некоторые поля массива, такие как ассоциативный массив.
  3. Переместите этот массив в какой-либо контейнер массива.
  4. Кодировать контейнер массива в JSON.

Но когда я пытаюсь кодировать, я получаю только последний элемент в контейнере массива. Я написал что-то вроде этого:

$arrContainer = array();
$arr = array();
$i = 0;
while($row = getDataFromDB)
{
  arr[$i] = $i;
  arr["name"] = row["name"];
  arr["age"] = row["age"];

  array_push($arrContainer, $arr);
  $i++;
}

JSON.encode($arrContainer);

ВОПРОС: Как я могу создать массив массивов с некоторыми данными?

Ответы [ 5 ]

3 голосов
/ 08 августа 2011
while($row = getDataFromDB)
{
   $arr[]=$row; // add $row as element of $arr array
}

Теперь вы получаете и можете Json его кодировать

Кроме того, некоторые расширения базы данных могут автоматически возвращать все данные в многомерный массив.
См. PDOStatement :: fetchВсе руководство

1 голос
/ 08 августа 2011

Код, который вы опубликовали, верен, однако в следующих строках вы забыли поставить $ перед переменной $arr:

arr[$i] = $i;
arr["name"] = row["name"];
arr["age"] = row["age"];

Также строка arr[$i] = $i;, вероятно, должна выглядеть примерно так:$arr['rowNum'] = $i; если ключ будет таким же, как значение, кажется избыточным.

И нужно сказать, что использование $arrContainer[]=$row;, как предложено @RiaD, - более быстрый способ получить массив строки, array_push()больше предназначен для добавления нескольких значений в массив или если вы хотите рассматривать его как стек.

1 голос
/ 08 августа 2011

Вы можете создать массив как в ответе @ RiaD и затем выведите json как ..

while($row = getDataFromDB) // @RiaD's code
{
   $arr[]=$row; // add $row as element of $arr array
}

//json output
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); 
header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); 
header("Cache-Control: no-cache, must-revalidate" ); 
header("Pragma: no-cache" );
header('Content-type: application/json');
echo  json_encode($your_array);
1 голос
/ 08 августа 2011

попробуйте это:

$arr = array();
$i = 0;
while($row = getDataFromDB){
  $arr[$i] = $row;
  $i++;
}
JSON.encode($arr);
0 голосов
/ 09 августа 2011
$allValuesArr = array();
$arr= array();
while($myRow = mysql_fetch_array($result))
{
    $arr["uid"] = $myRow["uid"];
    $arr["name"] = $myRow["name"];
    $arr["surname"] = $myRow["surname"];
    $arr["age"] = $myRow["age"];
    $arr["telephone"] = $myRow["telephone"];
    $arr["prof_id"] = $myRow["prof_id"];
    //$allValuesArr[] = $arr;
    array_push($allValuesArr, $arr);
}

$strJSON = json_encode($allValuesArr);
echo $strJSON;

ответ я получаю:

[{"uid":"1","name":"Sergii","surname":"Surname1","age":"26","telephone":"0976543135","prof_id":"1225423"},{"uid":"2","name":"Slava","surname":"Surname2","age":"24","telephone":"06353524","prof_id":"13584384"},{"uid":"3","name":"Desame","surname":"Surname3","age":"28","telephone":"0973153584","prof_id":"35843815"}]
...