【发布时间】:2014-03-25 02:12:04
【问题描述】:
我有一个直接来自 API 的 JSON 数组,其中一个看起来像这样:
{
"type": "champion",
"version": "4.4.3",
"data": {
"Aatrox": {
"id": "Aatrox",
"key": "266",
"name": "Aatrox",
"title": "the Darkin Blade",
"stats": {
"armor": 14.0,
"armorperlevel": 3.8,
"attackdamage": 55.0,
"attackdamageperlevel": 3.2,
"attackrange": 150.0,
"attackspeedoffset": -0.04,
"attackspeedperlevel": 3.0,
"crit": 0.0,
"critperlevel": 0.0,
"hp": 395.0,
"hpperlevel": 85.0,
"hpregen": 5.75,
"hpregenperlevel": 0.5,
"movespeed": 345.0,
"mp": 30.0,
"mpperlevel": 45.0,
"mpregen": 0.0,
"mpregenperlevel": 0.0,
"spellblock": 30.0,
"spellblockperlevel": 1.25
}
},
然后它只是对所有其他英雄重复此操作。我使用 cURL 将其转换为 PHP 数组,如下所示:
$url="api_url_blah";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
$array = json_decode($result, true);
从那里,我创建了一个 foreach 循环来列出所有冠军及其“盔甲”统计数据,但是盔甲不会显示,但冠军名称会显示:
$i = 1;
foreach($array['data'] as $champs)
{
echo $champs['id']. "<br>";
foreach($champs['stats'] as $stats) {
echo $stats['armor'];
}
$i++;
}
正如我所说,冠军名称出现了,但第二个 foreach 循环没有返回任何内容。另外,我想知道最方便的方法是什么(在这个工作之后)我可以根据 PHP 变量调用一个英雄的统计数据,而不是一次调用所有 118 个。
这是数组的 var_dump():
array(3) { ["type"]=> string(8) "champion" ["version"]=> string(5) "4.4.3" ["data"]=> array(118) { ["Aatrox"]=> array(5) { ["id"]=> string(6) "Aatrox" ["key"]=> string(3) "266" ["name"]=> string(6) "Aatrox" ["title"]=> string(16) "the Darkin Blade" ["stats"]=> array(20) { ["armor"]=> float(14) ["armorperlevel"]=> float(3.8) ["attackdamage"]=> float(55) ["attackdamageperlevel"]=> float(3.2) ["attackrange"]=> float(150) ["attackspeedoffset"]=> float(-0.04) ["attackspeedperlevel"]=> float(3) ["crit"]=> float(0) ["critperlevel"]=> float(0) ["hp"]=> float(395) ["hpperlevel"]=> float(85) ["hpregen"]=> float(5.75) ["hpregenperlevel"]=> float(0.5) ["movespeed"]=> float(345) ["mp"]=> float(30) ["mpperlevel"]=> float(45) ["mpregen"]=> float(0) ["mpregenperlevel"]=> float(0) ["spellblock"]=> float(30) ["spellblockperlevel"]=> float(1.25) } }
【问题讨论】:
-
@zerkms
var_dump()究竟是什么? -
stats不是data的子数组 -
@user1895377: 每个变量,如果你没有任何特别的嫌疑人
-
我的错,很难用肉眼解码json
-
@user1895377:天啊。 停止猜测,检查
var_dump你有什么实际数据。您对$champs['stats']有疑问吗?核实。对$stats中的内容感到困惑?核实。编程是关于事实,而不是关于信念。