PHP JSON auswerten

s1m0n

Lt. Junior Grade
Registriert
Mai 2008
Beiträge
368
Hey Leute,

Habe hier n Problem mit dem Auslesen von nem JSON File.

Und zwar um folgendes File handelt es sich: JSON File
Ziel ist es ne Seite mit HTML und PHP zu erstellen, die mir den Mensaplan richtig ausgibt.

Allerdings scheitere ich beim Auslesen des JSON Files. Ich will nur die erste Woche ausgeben, da mir das erstmal reicht (das File wird ja aktuell gehalten).

Mein Ansatz:
PHP:
$seite = file_get_contents("http://www.uni-ulm.de/mensaplan/data/mensaplan.json");
$data = json_decode($seite,true);
So bekomm ich ja die JSON Datei als Array.

Wie greif ich jetzt am einfachsten auf die erste Woche UND dann anschließend auf die Tage der ersten Woche zu ?

Btw. bin noch PHP Anfänger, will mich aber trotzdem dran versuchen.

Würde mich über eure Hilfe freuen :)
 
Mach einen var_dump, lass dir alles ausgeben und zieh die richtigen Rückschlüsse, wie du die Daten ansprechen kannst.
 
@ Hancock: Genau deswegen ein var_dump. ;) Der Zugriff geht nur über
Code:
$data ->weeks[0]->days[0]
da alles über Objekte gekapselt ist. Ergo haben alle Elemente der Klasse stdClass für sich, wo man Objekte natürlich nur über den Objektoperator (->) anspricht. Deine Variante mit Arrays funktioniert, wenn du die Objekte vorher in ein Array wandelst.
Code:
function ObjectToArray( $o )
{
	if( is_object( $o ) ) $o = get_object_vars( $o );
	if( is_array( $o ) ) return array_map( __METHOD__, $o );
	return $o;
}

$data = ObjectToArray( json_decode( file_get_contents( 'http://www.uni-ulm.de/mensaplan/data/mensaplan.json' ) ) );

$montag=$data["weeks"][0]["days"][0];
 
Yuuri schrieb:
@ Hancock: Genau deswegen ein var_dump. ;) Der Zugriff geht nur über
Code:
$data ->weeks[0]->days[0]
da alles über Objekte gekapselt ist. Ergo haben alle Elemente der Klasse stdClass für sich, wo man Objekte natürlich nur über den Objektoperator (->) anspricht. Deine Variante mit Arrays funktioniert, wenn du die Objekte vorher in ein Array wandelst.
Code:
function ObjectToArray( $o )
{
	if( is_object( $o ) ) $o = get_object_vars( $o );
	if( is_array( $o ) ) return array_map( __METHOD__, $o );
	return $o;
}

$data = ObjectToArray( json_decode( file_get_contents( 'http://www.uni-ulm.de/mensaplan/data/mensaplan.json' ) ) );

$montag=$data["weeks"][0]["days"][0];

Erstmal danke. Das von Hancock hat schon funktioniert.
Weil mit
PHP:
$data = json_decode($seite,true);
Wandel ich das doch schon in ein Array, wenn ich das richtig verstanden hab ?!
Also durch das true.
 
Zurück
Oben