2013-03-25 13 views
6

New to php. İsim-değer çiftinde JSON verilerini ön tarafa göndermeye çalışıyorum. here aldığım bir örneği denedim. Aşağıdaki, JSON ad değeri biçiminde verileri gönderen kod parçamdır. JSON biçiminde bir dizi nesne PHP'den nasıl gönderilir

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

Ben ön uç

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

Sorun nesneleri dizisini bekliyordum olduğu bu var. Yukarıdaki değer, SQL sorgusundan elde edilen son değerdir. Bir dizi nesne alabilmem için bu kodda yapmam gereken değişiklikler nelerdir?

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

Lütfen tavsiye ederiz.

+0

beri, isterim: As sahip sonuçlanabilir

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

Ön uçta bir Nesne alamayacağınızı sandınız, ama Array [id: 12, name: "Manisha"] – Waygood

cevap

14

$ liste bir dizi olması gerekiyor ve sadece bu kodu gibi öğelerini bu itebilir:

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

Ayrıca yerine ile yineleme arasında tek seferde tüm satırları almak için yöntem fetch_all() kullanabilirsiniz bir döngü. Bu örnekte, sadece kimlik ve ad yerine, seçtiğiniz tüm alanları elde edersiniz.

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

Liste diziniz yalnızca 1 satır saklıyor. Bunu deneyin:

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

Bu yardımcı olur umarım! Bir dizi $list birden çok kez burada üzerine

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

: bu sizin için çalışıyorsa

0

bakınız. nesneleri

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

deneyin.

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

için array_push kullanarak bir yığın ekleme dizinin sonunda her nesne itme deneyin ($array[] = $data eşdeğer, ama size daha okunabilir hale) gereken bir dizi oluşturma

0

en İçeri belirli Nesneler olmadan bu dosya yapısına sahip varsayalım: $ liste değerler dizisi olarak tanımlanır

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

     "Physics":[] 

     } 
    ] 

    } 
İlgili konular