Problem bei Array auslesen

Bekanntlich sehen ja mehrere Augen mehr als zwei. Ich werde irgendwie verrückt, weil ich nicht auf einen Parameter eines Arrays zugreifen kann, ich weis aber beim besten Willen nicht warum. Findet eventuell jemand den Fehler bzw. kann mir sagen wo ich auf dem Schlauch stehe bzw. was ich falsch mache?

Sieht vom Prinzip so aus Fehler bei state


<?
	 $data = '[{"type":"AA","adr":"12345678","config":"ABCDEFG","state":"00:00"}]';
	 $data = json_decode($data);
	 var_dump($data);
	 foreach($data as $device)
	 {
	 	if(isset($device->type))
		{
			$type = $device->type;
			var_dump($type);
			if($type == "AA")
			{
				if(isset($device->adr))
				{
					$address = $device->adr;
					var_dump($address);
				}
				if(isset($device->config))
				{
					$device = $device->config;
					var_dump($device);
				}
				$exist = isset($device->state);
				var_dump($exist);
				$state = $device->state;
				var_dump($state);
			}
		}
	 }
?>

Ausgabe ist bei mir:


array(1) {
  [0]=>
  object(stdClass)#1 (4) {
    ["type"]=>
    string(2) "AA"
    ["adr"]=>
    string(8) "12345678"
    ["config"]=>
    string(7) "ABCDEFG"
    ["state"]=>
    string(5) "00:00"
  }
}
string(2) "AA"
string(8) "12345678"
string(7) "ABCDEFG"
bool(false)

Notice:  Trying to get property 'state' of non-object in D:\IP-Symcon\scripts\38514.ips.php on line 25
NULL

Warum ist


$exist = isset($device->state);
var_dump($exist);

false ?

Und warum kommt die Meldung


Notice:  Trying to get property 'state' of non-object

?

Ist das Zeile 25?
isset($device->state);
Isset ist dafür weniger geeignet.
Nimm lieber PHP: property_exists - Manual
Und warum überhaupt als Objekt und nicht als Array dekodieren?
So ist zumindest deine Überschrift vom Thema falsch :wink:
Michael

Du überschreibst device

zuweisung.PNG

Geil, das habe ich in Tapatalk nicht gesehen :slight_smile:
Problem bei isset auf Objekten ist btw das hier eventuell eine magische Methode wie __isset oder __get aufgerufen wird.
Michael

:banghead: Vielen Dank Euch beiden, ich wusste ja mehre Augen sehen mehr als zwei, da sitzt man vor dem Bildschirm und übersieht so was Banales :eek:.