2013-03-25 63 views
6

Mới tới php. Tôi đang cố gắng gửi dữ liệu JSON đến giao diện người dùng trong cặp tên-giá trị. Tôi đã thử một ví dụ mà tôi có here Sau đây là đoạn mã của tôi gửi dữ liệu theo định dạng giá trị tên JSON.Cách gửi một mảng các đối tượng ở định dạng JSON từ PHP

while($stmt->fetch()){ 
    $list = array('id' => $fid, 'name' => $fname); 
} 
$stmt->free_result(); 
$stmt->close(); 
echo json_encode($list); 

tôi nhận này trên front-end

Object {id: 12, name: "Manisha"} 

Vấn đề là tôi đã mong đợi một mảng của các đối tượng. Giá trị trên là giá trị cuối cùng thu được từ truy vấn SQL. Những thay đổi tôi nên thực hiện cho mã này là gì để tôi có thể nhận được một mảng các đối tượng. Một cái gì đó như

[{"id":"1","name":"Kumari"}, {"id":"2","name":"KM"}, {"id":"3","name":"Manisha"}] 

Xin vui lòng tư vấn.

+0

từ $ danh sách được định nghĩa là một mảng các giá trị, tôi sẽ đã nghĩ rằng bạn sẽ không nhận được một chiếc Object ở mặt trước, nhưng Array [id: 12, tên: "Manisha"] – Waygood

Trả lời

14

$ danh sách cần phải được một mảng, và bạn chỉ có thể đẩy các mục để nó như thế nào trong mã này:

$list = array(); 
while($stmt->fetch()){ 
    $list[] = array('id' => $fid, 'name' => $fname); 
} 
$stmt->free_result(); 
$stmt->close(); 
echo json_encode($list); 

Bạn cũng có thể sử dụng phương pháp fetch_all() để có được tất cả các hàng cùng một lúc, thay vì lặp lại với một vòng lặp. Mặc dù trong ví dụ này bạn sẽ nhận được tất cả các trường mà bạn đã chọn, thay vì chỉ là id và tên.

$list = $stmt->fetch_all(); 
$stmt->free_result(); 
$stmt->close(); 
echo json_encode($list); 
1

Mảng danh sách của bạn chỉ lưu trữ 1 hàng. Hãy thử điều này:

while ($stmt->fetch()) { 
    $list[] = array('id' => $fid, 'name' => $fname); 
} 

Hy vọng điều này sẽ hữu ích!

0

Xem nếu công trình này dành cho bạn:

$n = 0; 
while($stmt->fetch()){ 
    $list[$n] = array('id' => $fid, 'name' => $fname); 
    $n++; 
} 
$stmt->free_result(); 
$stmt->close(); 
echo json_encode($list); 

Bạn đã được ghi đè $list nhiều lần với một mảng.

0

thử tạo ra một mảng của các đối tượng

$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); 
3

Bạn nên cố gắng đẩy từng đối tượng ở phần cuối của mảng như thêm vào một chồng sử dụng array_push (tương đương với $array[] = $data, nhưng làm cho nó dễ đọc hơn đối với bạn).

$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); 
0

Giả sử chúng ta có cấu trúc tệp này mà không đối tượng cụ thể bên trong:

{ 
    "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)); 

Như dẫn bạn có:

{"Subjects": 
    [ 
     { 
     "Mathematics":[], 

     "Physics":[] 

     } 
    ] 

    } 
Các vấn đề liên quan