2009-03-12 5 views
0

Ich muss in der Lage sein, eine Datenstruktur in PHP zu erstellen, die zum Beispiel eine Reihe von Automobilherstellern erstellt. Jedes dieser Array-Elemente enthält ein Child-Array, das für diesen Anbieter Autotypen enthält.Wie formatiere ich dieses JSON Objekt in PHP

Also würde haben Sie so etwas wie

$cars['toyota'] = array("camry", "etc"); 

Ich brauche so dass diese Datenstruktur in PHP zu erstellen, um der Lage sein, auf die JavaScript-Seite der Dinge, die ich so etwas wie

alert(cars.vendor[0].type[1]) 

tun können Wie kodiere ich diese Datenstruktur am PHP-Ende der Dinge?

Antwort

1

Wenn Sie PHP> 5.2.0 haben, versuchen Sie json_encode($cars).

Dies wird ein Array in einem Array machen, aber es wird dir nicht geben, was Sie in Ihrem Javascript-Probe haben:

$vendors = array(
    'toyota' => array('camry', 'etc.'), 
    'honda' => array('civic', 'fit', 'etc.'), 
); 

Sie wahrscheinlich nicht benötigen die eingebetteten Ebenen vendors[0].types[1] Ihre zu bekommen Informationen organisiert.

+0

Meine Frage ist, wie funktioniert das Array in PHP suchen, bevor json_encode spuckt das Format ich es in möchten? Nach einer Reihe von Arrays suche ich. – Coocoo4Cocoa

0

He, assoziative Arrays und Objekte werden gleichermaßen in Javascript behandelt. So PHP Struktur

$cars['toyota'] = array("camry", "etc"); 

würde dies in JSON gleichwertig sein:

var cars = { "toyota": [ "camry", "etc" ] }; 

Sie können ganz einfach PHP Struktur JSON ein mit json_encode Funktion konvertieren. Weitere Informationen zum JSON-Format finden Sie unter json.org.

1

Dies ist, wie es einzurichten, es zu tun, wie Sie wollen:

<script> 
    var test = <?php 
     print json_encode(array('vendor' => array(
      'toyota' => array('type' => array('camry','siena')), 
      'mitsubishi' => array('type' => array('mirage','galant')) 
     ))); 
    ?>; 
    alert(test.vendor['toyota'].type[1]); // siena 
    alert(test.vendor['mitsubishi'].type[0]); // mirage 
</script> 

ich empfehlen würde den Hersteller und Typ ein Teil davon Überspringen ganz, wenn Sie auch in diesem Objekt andere Sachen der Hand halten, und etwas zu tun, wie folgt aus:

<script> 
    var vendors = <?php 
     print json_encode(array(
      'toyota' => array('camry','siena'), 
      'mitsubishi' => array('mirage','galant') 
     )); 
    ?>; 
    alert(vendors['toyota'][1]); // siena 
    alert(vendors['mitsubishi'][0]); // mirage 
</script> 
0
$cars = array(); 
$cars['toyota'] = array("camry", "etc"); 
$json = json_encode($cars); 

geben Sie eine Javascript-Struktur von

var cars = { 
    toyota: [ 'camry', 'etc' ] 
}; 

Wenn Sie

var cars = { 
    vendor: [ { type: [ 'camry', 'etc' ] } ] 
} 

, die Sie alert(cars.vendor[0].type[1]) die PHP-Array

$cars = array(
    'vendor' => array(
     array('type' => array("camry", "etc")) 
    ) 
); 
$json = json_encode($cars); 

aussehen anrufen können sollten aber wie haben darauf hingewiesen worden, above Sie vielleicht die vendor -Teil und Nutzung überspringen sollte der entsprechende Herstellername als Schlüssel.

0

Hier ist, wie ich es tun würde:

class EmptyObject {} 
$cars = new EmptyObject(); 
$cars->vendor[] = array('type' => array('camry','sienna')); 
$cars->vendor[] = array('type' => array('mirage','galant')); 
$json = json_encode($cars); 
print $json; 
// this produces: 
// {"vendor":[{"type":["camry","sienna"]},{"type":["mirage","galant"]}]} 
0

Nun, wenn Sie mit PHP 5 sind Sie die Funktion json_encode verwenden können, wie viele von ihnen haben bereits beantwortet.

Wenn nein, wenn Sie PHP 4 verwenden, benötigen Sie something extra like this.

1
$data = array(); 
$data['userDetails'] =array(array("username"=>$username,"password"=>$password)); 
$data["wsfunction"]="user_authentication"; 

dann Ausgabe der Funktion json kodieren wie folgt

{"userDetails":[{"username":"Username","password":"Password"}],"wsfunction":"user_authentication"}