PHP:获取关联数组返回null,尽管var_dump中存在

时间:2017-01-11 15:50:37

标签: php arrays json null

我有一系列服务器'我存储在JSON文件中。

JSON文件如下所示: {"1":{"available":1,"players":0,"maxplayers":4}}

我用这个检索这个值:

$servers = (array) json_decode(file_get_contents("activeservers.json"));

但是,当我尝试使用$server = $servers[$id]访问数组时,$server为空。我注意到键是在引号中,所以我也尝试将$id转换为字符串,并用引号(")包围它,但这并不起作用。

需要注意的是,此代码正在返回" NULL":

foreach(array_keys($servers) as $key){
    var_dump($servers[$key]);
}

2 个答案:

答案 0 :(得分:1)

谢谢,@ Rizier123(谁解决了这个问题)。

显然将TRUE作为第二个参数传递给我的json_decode函数可以解决问题。

检查json_decode()PHP: json_decode)的PHP文档后,似乎传递此参数意味着生成的解码数组会自动转换为关联数组(这是重复出现的,这意味着子阵列自动发生。)

编辑:@ Rizier123也说" 你可能想要阅读:stackoverflow.com/a/10333200更好地理解为什么它如此"很奇怪"并且你的方法没有正常工作。"

答案 1 :(得分:1)

你的代码错了。在执行json_decode时,您也不需要输入强制转换,您可以将第二个参数设置为true more here。 此外,您不需要在foreach循环中使用array_keys函数, 试试这个。

$json    = '{"1":{"available":1,"players":0,"maxplayers":4}}';
$servers = json_decode($json, true);

foreach($servers as $key => $value) {
    print $value["available"];
}

执行print_r($value)以获取可用的所有数组键。您还可以利用$key变量打印出父数组的数组键。