PHP从嵌套数组中获取值
Posted
技术标签:
【中文标题】PHP从嵌套数组中获取值【英文标题】:PHP Get values from nested array 【发布时间】:2022-01-22 05:44:41 【问题描述】:我是 php 和数组的新手,我正在尝试从数组中获取值。但无论我如何尝试,我都无法获得价值。我做错了什么?
数组:
Array ( [playerinfo] => Array ( [rank] => Godfather [cash] => € 8,520,530 [weapon] => M-16 (29000) [health] => Array ( [width] => 100 [color] => green ) [wealth] => Too rich to be true [protection] => Bulletproof Humvee [plf] => Huge [plane] => Concorde [crew] => None [pbf] => Large [ship] => None ) [character] => Array ( [crime] => Array ( [0] => 120 [1] => 69 ) [gta] => Array ( [0] => 400 [1] => 70 ) [drugs] => Array ( [0] => 120 [1] => 2528 ) [airport] => Array ( [0] => 2700 [1] => 2529 ) [oc] => Array ( [0] => 86400 [1] => 1442364 ) [tr] => Array ( [0] => 10800 [1] => 1640016011 ) [plf] => Array ( [0] => 7200 [1] => 6712 ) [kill] => Array ( [0] => 3600 [1] => 1640019611 ) ) )
我尝试获取信息的方式:
$AccData = json_decode($MobinfoString, true);
echo $AccData['playerinfo']['rank'].'<br/>';
echo $AccData['playerinfo']['cash'].'<br/>';
foreach ($AccData as $playerinfo)
echo $playerinfo['playerinfo']['rank'].'<br/>';
echo $playerinfo['character']['gta'].'<br/>';
编辑:
json 字符串
"playerinfo":"rank":"Boss","cash":"€ 5,923,712","weapon":"M-16 (4500)","health":"width":"100","color":"green","wealth":"Too rich to be true","protection":"Bulletproof Humvee","plf":"Huge","plane":"Concorde","crew":"None","pbf":"Large","ship":"None","character":"crime":[120,122],"gta":[400,369],"drugs":[120,2582],"airport":[2700,2582],"oc":[86400,1640020450],"tr":[10800,1640016850],"plf":[7200,3935],"kill":[3600,1640020450]
有人知道怎么做吗?例如,我需要一个变量中来自飞机的协和飞机,以及一个变量中来自 gta 的时间值。还有一些来自这个字符串。
【问题讨论】:
您也可以添加 json 字符串吗?以及您希望打印什么。 更新我的问题,提前谢谢:) 您是否尝试过在循环中运行print_r($playerinfo);
并看看它会给您带来什么。
我只是用你的代码运行给定的 json,它工作正常。 $AccData['playerinfo']['rank']
返回“老板”。
@Martin4523 sandbox.onlinephpfunctions.com/code/…
【参考方案1】:
所以你的第一部分没问题,你的排名你也可以像第一部分一样显示
$AccData = json_decode($MobinfoString, true);
echo $AccData['playerinfo']['rank'].'<br/>';
echo $AccData['playerinfo']['cash'].'<br/>';
echo $AccData['playerinfo']['rank'].'<br/>';
echo $AccData['playerinfo']['plane'].'<br/>';
echo $AccData['character']['gta'][0].'<br/>';
但该角色与 playerinfo 处于同一级别,因此您需要从 AccData 访问它。 gta 也是一个类似于 health 的数组,所以你必须指定要显示的值,第一个是 0 或第二个是 1
【讨论】:
很奇怪。当我做同样的事情时,我没有结果。您在示例沙箱中使用的 json 字符串在 之前和之后都有“”。我的字符串不像示例中所示。这可能是问题吗? no 在 PHP 中,所有文本都必须在 '' 内,如果您没有看到任何结果,那么您在示例中发布的数组不同。请添加 error_reporing(E_ALL); ini_set('display_errors','On');在文件的开头或 print_r($AccData); 不,我有这个数组。它被复制并粘贴在这里。嗯,以后再看看,因为我现在没有时间。到目前为止谢谢你!以上是关于PHP从嵌套数组中获取值的主要内容,如果未能解决你的问题,请参考以下文章