我有一个存储在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]);
}
你的代码是错误的。此外,您在执行json_decode
时不需要键入 cast,您可以在此处将第二个参数设置为 true 更多信息。此外,您不需要在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
变量来打印出父数组的数组键。
谢谢,@Rizier123(谁解决了这个问题)。
显然,将TRUE
作为第二个参数传递给我的json_decode
函数可以解决问题。
在检查了 PHP 文档的 json_decode()
(PHP: json_decode) 后,传递此参数似乎意味着生成的解码数组会自动转换为关联数组(这是重复的,这意味着子数组会自动发生这种情况)。
编辑:@Rizier123还说:"你可能想阅读:stackoverflow.com/a/10333200 更好地理解为什么它如此"奇怪",而你的方法无法正常工作。