Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 动态JSON输出_Php_Arrays_Json - Fatal编程技术网

Php 动态JSON输出

Php 动态JSON输出,php,arrays,json,Php,Arrays,Json,对于我目前正在制作的一个工具,它输出JSON,我使用PHP对其进行解码,然后通过相同的脚本进行回显。在所说的JSON中,有些数组是静态的,有些是更改的,例如作业id 例如,对于一个请求,您可能会得到一个数组,如 { “等级”:“最高伤害制造者”, “玩家id”:姓名, “名称”:“名称”, 在这种情况下,等级、玩家id和名字都是静态的,唯一改变的是输出 在某些数组中,例如 { “罪行”:{ "4769740": { “犯罪识别号”:3, “犯罪名称”:“炸弹威胁”, “参与者”:“1616976

对于我目前正在制作的一个工具,它输出JSON,我使用PHP对其进行解码,然后通过相同的脚本进行回显。在所说的JSON中,有些数组是静态的,有些是更改的,例如作业id

例如,对于一个请求,您可能会得到一个数组,如

{
“等级”:“最高伤害制造者”,
“玩家id”:姓名,
“名称”:“名称”,

在这种情况下,等级、玩家id和名字都是静态的,唯一改变的是输出

在某些数组中,例如

{
“罪行”:{
"4769740": {
“犯罪识别号”:3,
“犯罪名称”:“炸弹威胁”,
“参与者”:“161697618480061829524”,
“开始时间”:1453948278,
“完成时间”:1454207478,
},
"4769739": {
“犯罪识别号”:4,
“犯罪名称”:“计划抢劫”,
“参与者”:“612285160303557999918587501875355”,
“开始时间”:1453948245,
“完成时间”: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/user/$id?选择=基本&键=$key”;
$json=文件获取内容($jsonurl);
$decodedString=json_decode($json,true);
//变量转储($decodedString);
回声“级别:.$decodedString[“级别”]。“
”; echo“Name:”.$decodedString[“Name”]。“
”;
但是我不能对犯罪进行同样的处理。我如何输出犯罪数据

使用代码,
$jsonurl=”http://api.torn.com/faction/7709?selections=crimes&key=key";
$json=文件获取内容($jsonurl);
$decodedString=json_decode($json);
foreach($decodedString作为$key=>$value){
//在此步骤中,$key是4769740
//$value是内部值的数组
回声“级别:”.$value[“犯罪名称”]。“
”; }


我收到错误消息致命错误:无法在第19行的/var/www/html/tored/Scripts/party/crimes.php中使用stdClass类型的对象作为数组。

$decodedString将作为json的对象返回。在这种情况下,它将只有一个元素,即crimes,它是另一个保存crime对象的对象。这些crime对象中的每一个都包含您正在查找的数据

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($decodedString作为$key=>$value){
//在这一步,$key是字符串“crimes”,值是内部对象的对象
foreach($number=>$crime的值){
//现在$crime是每种犯罪的价值对象
echo“级别:”.$crime->crime_name.
”; } }
将输出:
炸弹威胁
有计划的抢劫

如果你知道犯罪是唯一的对象,你可以跳过第一个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>";
}
foreach($decodedString->crimes as$number=>$crime){
//$crime是包含您正在查找的数据的对象。
echo“级别:”.$crime->crime_name.
”; }
您尝试过foreach语句吗?foreach($decodedString[“crimes”]作为$key=>$value){echo$decodedString[“crimes”][$key];}
$decodedString=json_decode($json);
需要是
$decodedString=json_decode($json,true)使用你的代码,我得到了这个错误:致命错误:无法在第19行的/var/www/html/trift/Scripts/party/crimes.php中使用stdClass类型的对象作为数组。请参阅OP的底部以查看使用的代码。很抱歉,我应该知道json_decode会将其转换为一个对象而不是数组。请使用$value->crime_name。如果这样做的话$value上的print_r(),它将使您更好地了解您正在使用的是什么。我将修复上面的解决方案。您还将需要另一个for循环。