2013-03-25 14 views
6

Nowy do php. Próbuję wysłać dane JSON do interfejsu użytkownika w parze nazwa-wartość. Próbowałem przykład, który mam here Poniżej znajduje się mój fragment kodu, który wysyła dane w formacie wartości nazwy JSON.Jak wysłać tablicę obiektów w formacie JSON z PHP

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

mam to na front-end

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

Problem Spodziewałem tablicę obiektów. Powyższa wartość jest ostatnią wartością uzyskaną z zapytania SQL. Jakie zmiany należy wprowadzić w tym kodzie, aby uzyskać tablicę obiektów. Coś w rodzaju:

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

Proszę o poradę.

+0

od $ lista jest zdefiniowana jako tablica wartości, chciałbym pomyślałem, że nie dostaniesz przedmiotu z przodu, ale Array [id: 12, name: "Manisha"] – Waygood

Odpowiedz

14

$ lista musi być tablicą, i można po prostu wcisnąć do niego elementów jak w tym kodzie:

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

Można również użyć metody fetch_all() uzyskać wszystkie wiersze na raz, zamiast iteracji z pętla. Chociaż w tym przykładzie otrzymasz wszystkie wybrane przez Ciebie pola, zamiast tylko identyfikatora i nazwy.

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

Twoja tablica zawiera tylko 1 wiersz. Wypróbuj to:

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

Mam nadzieję, że to pomoże!

0

sprawdzić, czy to działa dla Ciebie:

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

Byłaś nadpisanie $list wielokrotnie z tablicy.

0

spróbuj utworzyć tablicę obiektów

$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

Należy starać pchanie każdy obiekt na końcu tablicy jak dodanie do stosu przy użyciu array_push (odpowiednik $array[] = $data, ale sprawia, że ​​stają się bardziej czytelne dla Ciebie).

$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

Załóżmy mamy tę strukturę plików bez konkretnych obiektów wewnątrz:

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

w wyniku masz:

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

     "Physics":[] 

     } 
    ] 

    } 
Powiązane problemy