2017-01-24 6 views
-3

JSON, который распечатывается аналогично:PHP JSON массива: Illegal строка смещения 'first_name'

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

Это происходит из кода ниже

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

Однако я получаю ошибки:

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

Любые идеи? Я не вижу, что я делаю, очевидно, неправильно.

Благодаря

+3

'$ profile' больше не' array', а 'string' –

+0

json_encode возвращает строку –

+0

Если этот' $ this-> session-> getProfile() 'должен возвращать строку JSON, используйте' json_decode ($ this-> session-> getProfile()) ' – RiggsFolly

ответ

-1

Вы должны декодировать данные в формате JSON, если вы хотите получить доступ к массиву:

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

Это может быть правдой, если' $ this-> session-> getProfile() 'содержит строку json. Но, очевидно, это не так. – yivi

+0

Извините, но я не понимаю, что должен делать ваш второй параметр «true» в json_encode? – sebifeixler

-1

Я не уверен, что вы хотите сделать, но как только вы

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

тогда ответ, который вы получаете, может быть строкой, и вам нужен объект или наоборот