对于我正在制作的工具,它输出JSON并使用PHP对其进行解码,然后通过相同的脚本对其进行回显。在所述JSON中,一些数组是静态的并且一些变化,例如作业id。
例如,对于请求,您可能会获得一个数组,例如
{
"rank": "Supreme Damage Dealer",
"player_id": Name,
"name": "Name",
在这种情况下,rank,player_id和name都是静态的,唯一改变的是输出。
在某些数组中,例如
{
"crimes": {
"4769740": {
"crime_id": 3,
"crime_name": "Bomb threat",
"participants": "1616976,1848006,1829524",
"time_started": 1453948278,
"time_completed": 1454207478,
},
"4769739": {
"crime_id": 4,
"crime_name": "Planned robbery",
"participants": "612285,1603035,579999,1858750,1875355",
"time_started": 1453948245,
"time_completed": 1454293845,
},
诸如4769740和4769739之类的数字会发生变化,因此我无法按名称/等级输出,因为与名称/等级不同,标题会发生变化。
我需要将它输出到页面上,为什么我的名字和排名相同。 目前,名称和等级的输出如下:
$jsonurl = "http://api.torn.com/user/$id?selections=basic&key=$key";
$json = file_get_contents($jsonurl);
$decodedString = json_decode($json, true);
//var_dump($decodedString);
echo "Level: ".$decodedString["level"]."</br>";
echo "Name: ".$decodedString["name"]."</br>";
然而,对于这些罪行,我不能这样做。我如何输出犯罪数据?
使用代码,
$jsonurl = "http://api.torn.com/faction/7709?selections=crimes&key=key";
$json = file_get_contents($jsonurl);
$decodedString = json_decode($json);
foreach($decodedString as $key => $value){
//At this step $key is 4769740
//$value is an array of the values inside
echo "Level: ".$value["crime_name"]."</br>";
}
我收到错误消息致命错误:不能在第19行的/var/www/html/torn/Scripts/Faction/crimes.php中使用stdClass类型的对象作为数组
答案 0 :(得分:0)
$ decodingString将作为json的对象返回。在这种情况下,它只有一个元素,犯罪是另一个拥有犯罪对象的对象。这些犯罪对象中的每一个都包含您正在寻找的数据。
foreach($decodedString as $key => $value){
//At this step $key is the string "crimes" and the value is the object of objects inside
foreach($value as $number => $crime){
//Now $crime is an object of values for each crime
echo "Level: ".$crime->crime_name."</br>";
}
}
输出:
炸弹威胁
计划抢劫
如果您知道犯罪是唯一的对象,您可能会跳过第一个foreach。 print_r()是您调试的朋友。
foreach($decodedString->crimes as $number => $crime){
//$crime is the object with the data you're looking for.
echo "Level: ".$crime->crime_name."</br>";
}