PHP + JSON显示没有键的结果?

时间:2015-01-01 01:13:45

标签: php arrays json

首先,抱歉,因为我的英语不好。

我遇到了问题。 以JSON格式从URL请求数据并得到如下内容:

array(1) { ["NICK_HERE"]=> array(5) { ["id"]=> int(123456789) ["name"]=> string(11) "NICK_HERE" ["class"]=> int(538) ["level"]=> int(97) ["online"]=> int(1420061059000) } }

然后,我希望从那里显示一些内容,通常是$x['NICK_HERE']['id'],但因为NICK_HERE会发生变化,而且因为我不能在那里使用变量,所以有办法绕过这个吗? 例如$x[0]['id']之类的东西? 排序先选择,不管是什么?

感谢您的帮助!

P.S。新年快乐!

3 个答案:

答案 0 :(得分:0)

使用foreach循环。
假设您的数组名称是$ array。

foreach($array as $i=>$a)
{
    echo "index: ".$i." id:".$a['id']."<br>";
}

假设您的json字符串名称为$json。然后用这种方式

$array=$json_decode($json);  
foreach($array as $i=>$a)
{
    echo "index: ".$i." id:".$a->id."<br>";//here you will get it as object
}

希望你明白了。

答案 1 :(得分:0)

由于您知道第一个数组有一个键名,因此您可以获得第0个键。

test.php的     

$x = array(
        "NICK_HERE" => array(
                "id" => 123456789,
                "name" => "NICK_HERE",
                "class" => 538,
                "level" => 97,
                "online" => 1420061059000
        )
);

$name = array_keys($x)[0];
echo $x[$name]["id"];

?>

输出:

php test.php
123456789%

答案 2 :(得分:0)

我的建议(因为我认为最简单的方法是使用current(),但您也可以使用array_column() ......

代码:(Demo

$array=[
    "NICK_HERE"=>["id"=>123456789,"name"=>"NICK_HERE","class"=>538,"level"=>97,"online"=>1420061059000]
];

echo current($array)['id'];

echo "\n";

echo array_column($array,'id')[0];

输出:

123456789
123456789

这些方法假定子阵列元素id保证存在。如果不是,您需要在尝试访问前与isset()核对 - 以避免发出通知。