php使用列表中的值解析json
我有这样一个json:php使用列表中的值解析json,php,json,Php,Json,我有这样一个json: "achievementsProgress": [ { "value": 11, "globalID": 23000000 }, { "value": 11, "globalID": 23000001 }, { "value": 11, "globalID": 23000002 }, { "value": 147, "gl
"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和关联选项。