2017-01-02 18 views
1

Одна из моих функций возвращает JSON кодированное содержимое с помощью:PHP возвращения JSON закодированные строки из функции

return json_encode($json, true); 

Теперь в моем коде, вызов этой функции я уже пытался использовать:

die(var_dump($result[0])); 
die(var_dump($result["user"])); 
die(var_dump($result->user)); 

Ничего из этого не получилось. Когда я сбросить все содержимое я получаю возвращенный, это выход:

{"usd":1,"user":10000} 
+0

Почему не попробовать 'умереть (var_dump ($ результат));' один и посмотреть, что происходит? – Perumal

+0

Вы уже пробовали это, оно возвращается: строка и длина. – wichtel

+1

Вы знаете, что возвращаемое значение 'json_encode()' является строкой, не так ли? –

ответ

0

Я предполагаю, что переменный $ результата является контентом, который возвращается из функции.

Вы не можете получить доступ к свойствам внутри этой строки json, прежде чем декодировать ее снова. Поэтому вы не сможете использовать $ result ["user"] или $ result-> user, поскольку в результате есть json-строка.

Вы должны декодировать первый:

$result = json_decode($result, true); 

http://php.net/manual/en/function.json-decode.php

+0

Работает, спасибо. Что делать, поэтому я могу использовать $ result-> user вместо $ result ["user"]? – wichtel

+0

Если вы хотите, чтобы результат был объектом, вы должны его декодировать: $ result = json_decode ($ result); (так что без true, тогда вы можете сказать $ result-> user. Однако, если вы хотите получить результат как ассоциативный массив, чтобы вы могли использовать $ result ['user'], вы должны его декодировать, как я писал в ответе выше. –