【问题标题】:iterate multidimensional array and retrieve both single value together with array values迭代多维数组并检索单个值和数组值
【发布时间】:2021-01-15 15:01:29
【问题描述】:

我有以下需要迭代的数组。我需要获取标题值,然后是每个“团队”和“图片”值。我怎样才能做到这一点?我试过这个,但是这给了我一个错误“非法字符串偏移'团队'”。

        $xml = simplexml_load_file($fileName);
    
    //print_r($xml);
    $eventHeader = $xml->title;
    
    // standings array
        $standings_arr=array();
        $standings_arr["standings"]=array("header" =>(string)$eventHeader);
 
    foreach($xml->row as $item)
    {
         $standings_item=array(
        "team" => (string)$item->team,
        "picture" => (string)$item->picture,
        "v" => (string)$item->v,
        "f" => (string)$item->f,
        "p" => (string)$item->p
       );
        array_push($standings_arr["standings"], $standings_item);
    }

    foreach ($standings_arr as $row ) {
      
      $header = $row['header'];

      if (is_array($row)) 
      { 
        foreach ( $row as $key => $value ) {
          echo $value['team'];
        }
      }
    }

有人可以指导我吗?

【问题讨论】:

  • 在第二个循环之前检查一下if (is_array($row)) { foreach ($row...) { ... } },因为header元素不是数组

标签: php arrays loops


【解决方案1】:

如果标题是数组中的第一项,您可以shift 数组然后迭代:

$header = array_shift($standings);

foreach ($standings as $standing) {
    if (! is_array($standing)) continue;
    
    if (isset($standing['team'])) {
        echo $standing['team'];
    }
}

【讨论】:

  • 如果有一个“footer”键,例如在这个数组中呢?
  • 我现在已经更改了上面的代码,我现在得到了标头值,但仍然在 "echo $value['team'];" 上得到相同的警告
  • 我编辑上面的代码,如果继续不工作,用整个数组定义编辑你的问题。
  • 它不工作,所以我编辑下面的代码。
  • 我让它像这样工作 foreach ($standings_arr as $standing) { //echo "
    # $num
    "; foreach ($standing as $key=>$value) { if (!is_array($value)) { //echo "$key: $value
    ";回声 $value ."
    "; } else { if (isset($value['team'])) { echo $value['team'] ."
    "; } } } }
猜你喜欢
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
  • 2019-12-24
  • 2023-03-08
相关资源
最近更新 更多