Mittels PHP eine JSON Struktur erstellen - Fehler bei Multi-Arrays?

WEBi

Mitglied
Hi zusammen,

ich habe ein Array, das ich mittels JSON übergeben will!
Jedoch scheint es nicht ganz zu passen, denn bei der JSON Struktur ist der erste "items"-Array ein Array und der zweite "items"-Array ein Object! Warum?

PHP:
array(2) {
	[0]=> array(1) {
		["items"]=> array(2) {
			[0]=> array(1) {
				["name"]=> array(2) {
					["name"]=> string(9) "Title AAA" ["text"]=> string(18) "Beschreibung1" 
				}
			} 
			[1]=> array(1) {
				["name"]=> array(2) {
					["name"]=> string(9) "Title BBB" ["text"]=> string(18) "Beschreibung2" 
				}
			}
		}
	} 
	[1]=> array(1) {
		["items"]=> array(2) {
			[2]=> array(1) {
				["name"]=> array(2) {
					["name"]=> string(9) "Title CCC" ["text"]=> string(18) "Beschreibung3" 
				}
			} 
			[3]=> array(1) {
				["name"]=> array(2) {
					["name"]=> string(9) "Title DDD" ["text"]=> string(18) "Beschreibung4" 
				}
			}
		}
	}
}

mit der Funktion json_encode bekomme ich folgende Struktur:
( $result = array ('data' => $data); echo json_encode ( $result);)

Code:
{"data":[{
	"items":[{
		"name":{
			"name":"Title AAA","date":"Beschreibung1"}
        },{
	    "name":{
		    "name":"Title BBB","date":"Beschreibung2"}
    }]
  },{
	"items":{
		"2":{
			"name":{
				"name":"Title CCC","date":"Beschreibung3"}
            },
           "3":{
	        "name":{
		        "name":"Title DDD","date":"Beschreibung4"}
        }
    }
  }]
}
 
hab jetzt schnell ein Array gebastelt:

PHP:
		$data = array();
		$data[0]['items'][0]['id'] = '111';
		$data[0]['items'][0]['name'] = 'Title AAA';

		$data[1]['items'][1]['id'] = '222';
		$data[1]['items'][1]['name'] = 'Title BBB';
		$data[1]['items'][2]['id'] = '333';
		$data[1]['items'][2]['name'] = 'Title CCC';		
		
		header('Content-type: application/json');
		$result = array ('data' => $data );
		echo json_encode( $result );

hier ist ein netter online JSON-Parser: http://json.parser.online.fr/

und jetzt habe ich den Fehler entdeckt!
=> beim zweiten fängt er bei 1 an und sollte aber bei 0 anfangen.

also statt $data[1]['items'][1] sollte $data[1]['items'][0] da stehen. Jetzt scheint es zu funktionieren!
 
Zurück