我有一系列服务器'我存储在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]);
}
答案 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
变量打印出父数组的数组键。