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

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

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

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

Обновить:

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

 $jsonCode = json_encode($d); 

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

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

 [{"item":"toy","rating":"baz" },{"item":"bike","rating":"2.3" }, {"item":"juice","rating":"1.3" }] 

Но я хочу несколько 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); 

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

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

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

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

 $json_array = json_encode($array); 

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

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

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

 $array[] = array("key1" => value1, "key2" => value2);