foreach循环返回同一条目的多个副本

时间:2017-08-15 14:02:44

标签: php json loops foreach

我试图从json文件中列出每个'name'条目。但是我不断为每个父母复制相同的条目几次。例如'Name'返回DennisDennisDennisDennis。我无法删除[3](或其中的任何数字),因为那时我的页面将变为空白。我下次在json中列出每个名字时如何对其进行编码?这是我的代码:     

$opts = array(
  'http'=>array(
    'header'=>"X-AUTH-TOKEN: 41e509ad68f0......"
  )
);

$context = stream_context_create($opts); 

$url    = 'workingurlhere'; 
$data   = file_get_contents($url, true, $context); 
$result = json_decode($data); 

foreach ($result as $all){
    echo $result -> data[3] -> Name;   
}


?>

3 个答案:

答案 0 :(得分:1)

你只需要引用$ all not $ result。

foreach ($result as $all){
  echo $all -> data[3] -> Name;   
}

答案 1 :(得分:1)

由于我不知道json的结构,这是半猜和半本能。

foreach ($result as $all){
    echo $all -> data[3] -> Name;   
}

或者,如果您需要循环data本身:

foreach ($result->data as $entry){
    echo $entry -> Name;   
}

答案 2 :(得分:1)

您的问题是您始终引用原始数组$result。所以你总会得到相同的结果。

foreach ($result as $all){
    echo $result->data[3]->Name; // Always printing the same index.   
}

我估计猜测以下内容可能会有效,但如果没有看到$result中的数据,我就无法100%确定。

foreach ($result->data as $values){
    echo $values->Name;   
}

如果这不起作用,可能值得使用$result包含的内容编辑原始问题。