2015-07-02 3 views
-3

Я получаю ответ от службы, а print_r() показывает массив, но он кажется отличным от обычных массивов. Если я печатаю array_values, он пуст. PHP:Массив показывает значения, но print_r (array_values) пуст

print_r($token); 
//Result: Array ([{"access_token":"123","token_type":"bearer"}] =>) 
    print_r(array_values($token)); 
//Result: Array ([0] =>) 

Почему значения access_token и token_type не перечислены в array_values?

+0

Потому что это JSON. – Daan

+0

Вы можете показать, как генерируется '$ token'? – Viral

ответ

2

Ответ не JSON, это не потому, что у вас есть массив типа JSON. Это потому, что в вашем массиве нет значения NO.

//Result: Array ([{"access_token":"123","token_type":"bearer"}] =>) 

Этот массив имеет один индекс без значения, следовательно, array_values ничего не показывает. Вы создали этот массив incorrectlly :)

+0

Возникла проблема с ответом! Спасибо что подметил это. – Tom

1

я могу воспроизвести ваши выходы с этим:

$token = array('{"access_token":"123","token_type":"bearer"}' => ''); 

Это потому, что у вас есть массив с ключом

'{"access_token":"123","token_type":"bearer"}' 

, но никакой ценности.

Чтобы получить доступ к строке JSON в ключе массива, вы можете сделать это:

$keys = array_keys($token); 
print_r($keys[0]); 

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

print_r(json_decode($keys[0])); 

Выход:

(
    [access_token] => 123 
    [token_type] => bearer 
) 

Демо-версия:Fiddle

Смежные вопросы