2017-01-24 2 views
-3

Die JSON, die ausgedruckt ist ähnlich:PHP JSON Array: Illegale String-Offset 'first_name'

{ 
    "c_id": { 
     "value": 66 
    }, 
    "first_name": { 
     "value": "Joe" 
    }, 
    ... 

Dieses aus dem Code unten

$profile = json_encode($this->session->getProfile(), true); 
    echo $profile; 
    echo $profile['first_name']['value']; 

Jedoch kommt, erhalte ich die Fehler:

Illegal string offset 'first_name' 
Illegal string offset 'value' 

Irgendwelche Ideen? Ich kann nicht sehen, was ich falsch mache.

Dank

+3

'$ profile' ist nicht mehr'array' sondern' string' –

+0

json_encode gibt eine Zeichenkette zurück –

+0

Wenn diese '$ this-> session-> getProfile()' eine JSON-Zeichenkette zurückliefern soll, verwenden Sie 'json_decode ($ this-> session-> getProfile()) ' – RiggsFolly

Antwort

-1

Sie müssen Ihre JSON-Daten dekodieren, wenn Sie das Array zugreifen möchten:

$profile = json_decode($this->session->getProfile(), true); 
+0

Das könnte wahr sein, wenn' $ this-> session-> getProfile() 'eine JSON-Zeichenfolge enthält. Aber offensichtlich nicht. – yivi

+0

Sorry, aber ich verstehe nicht, was Ihr zweiter Parameter "true" in json_encode tun soll? – sebifeixler

-1

ich nicht sicher, was Sie einmal tun wollen, aber Sie haben

$profile = json_decode($this->session->getProfile(), true);

dann die Antwort, die Sie bekommen, kann eine Zeichenfolge sein und Sie benötigen ein Objekt oder umgekehrt