Построить json массив в php динамически
Я могу создать простые json-объекты, подобные этому:
$d = array('item' => "$name" ,'rate' => "$rating");
Но что, если я хочу построить массив элементов и делать это динамически, так как я создаю его из запроса db?
Update:
Позвольте мне быть более конкретным. Я знаю, что мне нужно делать:
$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" }]
Ответы
Ответ 1
Но я хочу несколько 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);
Ответ 2
Это создаст многомерный массив из вашего запроса к базе данных, а затем закодирует его как JSON.
$d = array();
while ($row = $stmt->fetch_assoc()) {
$d[] = $row;
}
$json = json_encode($d);
Каждый $row
будет ассоциативным массивом данных, возвращаемых из базы данных. Присвоение его $d[]
добавляет его как индексированный элемент этого массива контейнеров.
Ответ 3
Что вы можете сделать, так это создать php-массив динамически, как вы хотите, затем скрыть его в json-массив, как показано ниже.
$json_array = json_encode($array);
Имейте в виду, что то, что вы предоставили, не является массивом json
Ответ 4
Почему бы не создать массив, как вы только что сделали, а затем передать массив через json_encode
?
Если вам нужен многомерный массив, попробуйте
$array[] = array("key1" => value1, "key2" => value2);