Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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_Json - Fatal编程技术网

php使用列表中的值解析json

php使用列表中的值解析json,php,json,Php,Json,我有这样一个json: "achievementsProgress": [ { "value": 11, "globalID": 23000000 }, { "value": 11, "globalID": 23000001 }, { "value": 11, "globalID": 23000002 }, { "value": 147, "gl

我有这样一个json:

"achievementsProgress": [
    {
      "value": 11,
      "globalID": 23000000
    },
    {
      "value": 11,
      "globalID": 23000001
    },
    {
      "value": 11,
      "globalID": 23000002
    },
    {
      "value": 147,
      "globalID": 23000003
    },
    {
      "value": 147,
      "globalID": 23000004
    },
    {
      "value": 147,
      "globalID": 23000005
    },
    .....
]
$jsondata = file_get_contents($url);
$data = json_decode($jsondata, true);
$items=$data->achievementsProgress;
$result=[];
$i=1;
foreach($items as $item)
   if($i++%3==0)
       $result[$item->globalID]=$item->value;
//now $result contains map of data you wanted globalid => value
$result['23000000'] == 11 and so on
这样下去,我需要能够每隔3秒读取一次
“value”
字段

因此
globalID
23000002
23000005
23000008
230000011
等,一直到65岁。然后我需要将它们保存为变量名,如:

globalID
23000002
globalID的
23000005

等等

现在我假设这必须在一个循环中完成

到目前为止,我有这么多

$jsondata = file_get_contents($url);
$data = json_decode($jsondata, true)
那就是

$data['achievementsProgress']
以获取上述json的列表


我该怎么做呢?

这里有一种方法。我认为你能做到这一点的任何方式都需要参与

$x=1;//为变量名启动一个计数器
对于($i=2;$i<65;$i+=3){//从索引2(第三个值)开始,递增3
如果(isset($data['achievementsProgress'][$i]){//,以防万一实际上没有
//使用变量变量创建所需的$Acquisition变量
${“成就$x”}=$data['achievementsProgress'][$i]['value'];
}
$x++;
}

此示例用于创建变量。

以下是一种方法。我认为你能做到这一点的任何方式都需要参与

$x=1;//为变量名启动一个计数器
对于($i=2;$i<65;$i+=3){//从索引2(第三个值)开始,递增3
如果(isset($data['achievementsProgress'][$i]){//,以防万一实际上没有
//使用变量变量创建所需的$Acquisition变量
${“成就$x”}=$data['achievementsProgress'][$i]['value'];
}
$x++;
}

此示例用于创建变量。

最好这样做:

"achievementsProgress": [
    {
      "value": 11,
      "globalID": 23000000
    },
    {
      "value": 11,
      "globalID": 23000001
    },
    {
      "value": 11,
      "globalID": 23000002
    },
    {
      "value": 147,
      "globalID": 23000003
    },
    {
      "value": 147,
      "globalID": 23000004
    },
    {
      "value": 147,
      "globalID": 23000005
    },
    .....
]
$jsondata = file_get_contents($url);
$data = json_decode($jsondata, true);
$items=$data->achievementsProgress;
$result=[];
$i=1;
foreach($items as $item)
   if($i++%3==0)
       $result[$item->globalID]=$item->value;
//now $result contains map of data you wanted globalid => value
$result['23000000'] == 11 and so on
现在您可以这样访问它:

"achievementsProgress": [
    {
      "value": 11,
      "globalID": 23000000
    },
    {
      "value": 11,
      "globalID": 23000001
    },
    {
      "value": 11,
      "globalID": 23000002
    },
    {
      "value": 147,
      "globalID": 23000003
    },
    {
      "value": 147,
      "globalID": 23000004
    },
    {
      "value": 147,
      "globalID": 23000005
    },
    .....
]
$jsondata = file_get_contents($url);
$data = json_decode($jsondata, true);
$items=$data->achievementsProgress;
$result=[];
$i=1;
foreach($items as $item)
   if($i++%3==0)
       $result[$item->globalID]=$item->value;
//now $result contains map of data you wanted globalid => value
$result['23000000'] == 11 and so on

最好这样做:

"achievementsProgress": [
    {
      "value": 11,
      "globalID": 23000000
    },
    {
      "value": 11,
      "globalID": 23000001
    },
    {
      "value": 11,
      "globalID": 23000002
    },
    {
      "value": 147,
      "globalID": 23000003
    },
    {
      "value": 147,
      "globalID": 23000004
    },
    {
      "value": 147,
      "globalID": 23000005
    },
    .....
]
$jsondata = file_get_contents($url);
$data = json_decode($jsondata, true);
$items=$data->achievementsProgress;
$result=[];
$i=1;
foreach($items as $item)
   if($i++%3==0)
       $result[$item->globalID]=$item->value;
//now $result contains map of data you wanted globalid => value
$result['23000000'] == 11 and so on
现在您可以这样访问它:

"achievementsProgress": [
    {
      "value": 11,
      "globalID": 23000000
    },
    {
      "value": 11,
      "globalID": 23000001
    },
    {
      "value": 11,
      "globalID": 23000002
    },
    {
      "value": 147,
      "globalID": 23000003
    },
    {
      "value": 147,
      "globalID": 23000004
    },
    {
      "value": 147,
      "globalID": 23000005
    },
    .....
]
$jsondata = file_get_contents($url);
$data = json_decode($jsondata, true);
$items=$data->achievementsProgress;
$result=[];
$i=1;
foreach($items as $item)
   if($i++%3==0)
       $result[$item->globalID]=$item->value;
//now $result contains map of data you wanted globalid => value
$result['23000000'] == 11 and so on

为什么要生成所有这些变量?看起来你可能让事情变得比必要的更困难了。不@Don'tPanic这是必要的为什么你要制造所有这些变量?似乎你让事情变得比必要的更困难了。不@Don'tPanic这是必要的我似乎无法让它工作。。。我使用了那个脚本,然后尝试了
“echo$achievement1”但它没有显示任何内容…抱歉,这可能是因为我在答案中使用了对象表示法。我没有注意到您在关联选项中使用了json_decode。@ShivamPaw我更新了答案,改为使用数组语法。谢谢;)现在起作用了。只是建议修改一个小错误,可能是因为问题不清楚:)@ShivamPaw接受了。很明显,我只是在测试它时用了那个键,以确保它是正确的,然后忘记了更改它。我似乎无法让它工作。。。我使用了那个脚本,然后尝试了
“echo$achievement1”但它没有显示任何内容…抱歉,这可能是因为我在答案中使用了对象表示法。我没有注意到您在关联选项中使用了json_decode。@ShivamPaw我更新了答案,改为使用数组语法。谢谢;)现在起作用了。只是建议修改一个小错误,可能是因为问题不清楚:)@ShivamPaw接受了。很明显,我只是在测试它时使用了该键,以确保它是正确的,然后忘记更改它。$data['achievementsProgress']的名称不正确。现在它应该一直工作到不工作。我正在使用json_decode和关联选项。$data['achievementsProgress']的名称不正确。现在它应该一直工作到不工作。我正在使用json_decode和关联选项。