我正在训练自己(JSON和PHP)并且我遇到了问题 我有Json解码看起来像这样:
"playerstats": {
"steamID": "75068112",
"gameName": "ValveTestApp260",
"stats": [
{
"name": "total_kills",
"value": 2314497
},
{
"name": "total_deaths",
"value": 1811387
},
要解析为php我做:
$url = 'myrul';
$content = file_get_contents($url);
$json = json_decode($content, true);
echo $json['playerstats']['stats'][1]['name']
它可以工作,但问题是当我更改id以获取统计数据时,数组的顺序不一样:/ 所以我不能使用[2]或任何其他数字来获取数据。
我在这里发布以了解如何使用每个数组的属性名称(例如'total_kills'
)而不是[1]来获取统计数据。[2] ..
感谢您的支持
答案 0 :(得分:1)
使用foreach
并使用if条件检查名称'total_kills'
是否为真,然后将其存储到新数组中。
<?php
$json = json_decode($content, true);
$new_array =array();
$i=0;
foreach($json['playerstats']['stats'] as $row )
{
if($row['name']=='total_kills')
{
$new_array[]=array($row['name']=>$row['value']);
}
if($i<10)
{
break;
}
$i++
}
print_r($new_array);
?>
答案 1 :(得分:0)
$url = 'myrul';
$content = file_get_contents($url);
$json = json_decode($content, true);
foreach($json['playerstats']['stats'] as $row )
{
echo $row['name'];
echo $row['value'];
}
答案 2 :(得分:0)
您正在寻找的是循环数组的方法。在PHP中,您可以执行以下操作;
$url = 'myurl';
$content = file_get_contents($url);
$json = json_decode($content, true);
foreach($json["playerstats"]["stats"] as $stat){
if($stat["name"] == "total_kills"){
echo "total kills: ".$stat["value"];
}
elseif($stat["name"] == "total_deaths"){
// ...
}
// etc... continue to select all parameters you would like
}
这样,您就可以使用if else语句获取value
每个统计信息的name
。
答案 3 :(得分:0)
对数组中的所有对象执行某些操作的另一种方法是使用array_map()
函数,该函数将另一个函数作为其参数之一。只要你能使用它就会强迫你遵守良好的编程习惯,因为传入函数不能修改数组之外的值和通过use
传入的参数。