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



我有一个存储在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 更好地理解为什么它如此"奇怪",而你的方法无法正常工作。

相关内容

  • 没有找到相关文章

最新更新