json_decode() funktioniert mit String aber nicht mit Variable


suntrop

Erfahrenes Mitglied
#1
Ich habe ein Array als JSON String in der DB gespeichert. Ich kann es aber jetzt nicht mehr als Array umwandeln.

PHP:
$json = $item->custom;
$custom = json_decode($json, true);
$string = json_decode('{"customSize":{"length":20,"width":20}}', true);

var_dump($json); // string(69) "{"customSize":{"length":20,"width":20}}"
var_dump($custom); // NULL
var_dump($string); // korrektes array
array(1) {
  ["customSize"]=>
  array(2) {
    ["length"]=>
    int(20)
    ["width"]=>
    int(20)
  }
}
Wenn ich mir den Inhalt ausgeben lasse ($item->custom), dann ist das ein String. Wenn ich genau diesen String in json_decode() kopiere, dann bekomme ich mein Array. Aber wenn ich die Variable in json_decode() einfüge, dann bekomme ich NULL zurück.
Ich verstehe den Fehler nicht. Was ist verkehrt mit meiner Variable?

PHP 7.0.11 FreeBSD
 
Zuletzt bearbeitet:

suntrop

Erfahrenes Mitglied
#2
Ok, habe es gefunden. Fast zwei Stunden Lehrgeld :)
Man soll ja nicht im Browser so prüfen :-D Problem ist schnell zu sehen, wenn man nicht nur die Ausgabe im Browser prüft:
Code:
<pre>string(69) "{&quot;customSize&quot;:{&quot;length&quot;:20,&quot;width&quot;:20}}"
Zur Verteidigung, der installierte Debugger hat gerade selber Bugs und läuft nicht :sneaky:
 

Neue Beiträge