динамически создавать массив json в php


Я могу создавать простые объекты json, такие как:

$d = array('item' => "$name" ,'rate' => "$rating");

Но что, если я хочу создать массив элементов и сделать это динамически, так как я создаю его из запроса бд?

Обновление:

Позвольте мне быть более конкретным, я знаю, что должен сделать:

$jsonCode = json_encode($d);

, который создаст объект json с полем товара и цены. Но мне нужно несколько объектов json в массиве json, когда я его кодирую.

Что я хочу, чтобы json wise был примерно таким:

[{"item":"toy","rating":"baz" },{"item":"bike","rating":"2.3" }, {"item":"juice","rating":"1.3" }]
 11
Author: Mike, 2013-06-27

4 answers

Но мне нужно несколько объектов json в массиве json, когда я его кодирую.

Затем создайте массив массивов и передайте его в json_encode. Документация о массивах объясняет, как добавлять элементы в массив, в разделе Создание/изменение с помощью синтаксиса квадратных скобок.

Ассоциативные массивы, подобные тому, который у вас уже есть, будут закодированы как объекты, "обычные" массивы (массивы с последовательными цифровыми ключами) будут закодированы как массивы.

Пример:

$d = array();

// This appends a new element to $d, in this case the value is another array
$d[] = array('item' => "$name" ,'rate' => "$rating");

$json = json_encode($d);
 24
Author: Felix Kling, 2013-06-26 23:44:34

Это создаст многомерный массив из вашего запроса к базе данных, а затем закодирует его как JSON.

$d = array();
while ($row = $stmt->fetch_assoc()) {
  $d[] = $row;
}
$json = json_encode($d);

Каждый $row будет ассоциативным массивом данных, возвращаемых из базы данных. Присвоение ему $d[] добавляет его в качестве индексированного элемента этого массива контейнеров.

 8
Author: Barmar, 2013-06-26 23:44:59

Что вы можете сделать, так это создать массив php динамически, как вы хотите, а затем преобразовать его в массив json, как показано ниже.

$json_array = json_encode($array);

Имейте в виду, что то, что вы предоставили, не является массивом json

 1
Author: Techie, 2013-06-26 23:38:05

Почему бы не создать свой массив, как вы только что сделали, но затем передать массив через json_encode?

Если вам нужен многомерный массив, попробуйте

$array[] = array("key1" => value1, "key2" => value2);
 0
Author: Liam Sorsby, 2013-06-27 00:49:50