Php JSON数组foreach循环,带有;其中;属性
我有一个直接来自API的JSON数组,其中一部分如下所示:Php JSON数组foreach循环,带有;其中;属性,php,arrays,json,foreach,Php,Arrays,Json,Foreach,我有一个直接来自API的JSON数组,其中一部分如下所示: { "type": "champion", "version": "4.4.3", "data": { "Aatrox": { "id": "Aatrox", "key": "266", "name": "Aatrox", "title": "the Darkin Blade",
{
"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
}
},
$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);
然后它会对其他所有冠军重复这一点。我使用cURL将其转换为PHP数组,如下所示:
{
"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
}
},
$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
循环。以下代码应该可以工作:
$i = 1;
foreach($array['data'] as $champs){
echo $champs['id'] . "<br/>" . $champs['stats']['armor'] . "<br/>";
$i++;
}
$i=1;
foreach($champs形式的数组['data']{
echo$champs['id']。“
”。$champs['stats']['armor']。”
;
$i++;
}
@zerkmsvar_dump()
到底是什么?stats
不是每个变量的数据的子数组
@user1895377:如果你没有任何特别的怀疑,我的坏,不容易解码jsoneye@user1895377:哦,我的天啊。停止猜测,检查您拥有的实际数据。您对$champs['stats']
有疑问吗?检查一下。混淆了$stats
中的内容吗?检查一下。编程是事实,而不是信念。@andrew我不知道。也许问题的作者需要它来计算迭代次数。但是他/她应该以$i=0
开头。