Новое на php. Я пытаюсь отправить данные JSON на передний конец в пару имя-значение. Я попробовал пример, который я получил здесь . Ниже приведен фрагмент кода, который отправляет данные в формате значения имени JSON.
while($stmt->fetch()){ $list = array('id' => $fid, 'name' => $fname); } $stmt->free_result(); $stmt->close(); echo json_encode($list);
Я получил это на front-end
Object {id: 12, name: "Manisha"}
Проблема в том, что я ожидал массив объектов. Вышеприведенное значение является последним значением, полученным из SQL-запроса. Какие изменения я должен внести в этот код, чтобы я мог получить массив объектов. Что-то вроде
[{"id":"1","name":"Kumari"}, {"id":"2","name":"KM"}, {"id":"3","name":"Manisha"}]
Пожалуйста посоветуй.
$ list должен быть массивом, и вы можете просто нажимать на него элементы, как в этом коде:
$list = array(); while($stmt->fetch()){ $list[] = array('id' => $fid, 'name' => $fname); } $stmt->free_result(); $stmt->close(); echo json_encode($list);
в$list = array(); while($stmt->fetch()){ $list[] = array('id' => $fid, 'name' => $fname); } $stmt->free_result(); $stmt->close(); echo json_encode($list);
Вы также можете использовать метод fetch_all (), чтобы сразу получить все строки, а не итерации с помощью цикла. Хотя в этом примере вы получили бы все поля, которые вы выбрали, вместо простого имени и имени.
$list = $stmt->fetch_all(); $stmt->free_result(); $stmt->close(); echo json_encode($list);
Вы должны попробовать нажать каждый объект в конце массива, как добавление в стек, используя array_push
(эквивалент $array[] = $data
, но делает его более читаемым для вас).
$list=array(); //instantiate the array while($stmt->fetch()){ $data = new stdClass(); // create a new object $data->id=$fid; $data->name=$fname; array_push($list,$data); // push object to stack array } $stmt->free_result(); $stmt->close(); echo json_encode($list);
в$list=array(); //instantiate the array while($stmt->fetch()){ $data = new stdClass(); // create a new object $data->id=$fid; $data->name=$fname; array_push($list,$data); // push object to stack array } $stmt->free_result(); $stmt->close(); echo json_encode($list);
Ваш массив списка хранит только 1 строку. Попробуй это:
while ($stmt->fetch()) { $list[] = array('id' => $fid, 'name' => $fname); }
Надеюсь это поможет!
Посмотрите, работает ли это для вас:
$n = 0; while($stmt->fetch()){ $list[$n] = array('id' => $fid, 'name' => $fname); $n++; } $stmt->free_result(); $stmt->close(); echo json_encode($list);
в$n = 0; while($stmt->fetch()){ $list[$n] = array('id' => $fid, 'name' => $fname); $n++; } $stmt->free_result(); $stmt->close(); echo json_encode($list);
Вы переписывали $list
несколько раз с помощью массива.
попробуйте создать массив объектов
$list = array(); while($stmt->fetch()) { // create an object $datum=new stdClass(); $datum->id=$fid; $datum->name=$fname; $list[] = $datum; } $stmt->free_result(); $stmt->close(); echo json_encode($list);
Предположим, что у нас есть эта файловая структура без определенных объектов внутри:
{ "Subjects" : [] } //Get your Json file and decode it $json = file_get_contents('CdStore/Pagetest.json'); $json_data = json_decode($json,true); //Specifiy your Objects like this $NewArray= array( 'Mathematics' => array(),'Physics' => array()); //Push the new Objects array_push($json_data['Pagess'],$NewArray); //Then encode to json $array = json_encode($json_data); //If you want to get the preview before saving print_r($array); //Save your file file_put_contents('CdStore/Pagetest.json', json_encode($json_data));
В результате у вас есть:
{"Subjects": [ { "Mathematics":[], "Physics":[] } ] }