数组显示值,但print_r(array_values)为空

时间:2015-07-02 06:43:39

标签: php arrays

我从服务获得响应,print_r()显示数组,但它似乎与通常的数组不同。 如果我打印array_values它是空的。 PHP:

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

为什么array_values中未列出access_token和token_type值?

2 个答案:

答案 0 :(得分:2)

答案不是JSON,这不是因为你有一个JSON类型的数组。这是因为你的数组中没有值。

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

该数组有一个没有值的索引,因此array_values没有显示任何内容。您已经错误地创建了该数组:)

答案 1 :(得分: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