【问题标题】:Display nested array key values in respective columns php html在各个列中显示嵌套数组键值 php html
【发布时间】:2017-12-17 17:30:37
【问题描述】:

我在 php 中有以下格式的数据

'Date 1' =>
  array (
    'Object 1 ' =>
    array (
      'Field 1' => Value 1,
      'Field 2' => Value 2,
      'Field 3' => Value 3,
    ),
  ),
  'Date 2' =>
  array (
    'Object 1 in Date 2' =>
    array (
      'Field 1' => Value 1,
      'Field 2' => Value 2,
    ),
    'Object 2 in Date 2' =>
    array (
      'Field 1' => Value 1,
      'Field 2' => Value 2,
      'Field 3' => Value 3,
    ),
  ),
)

我想在 HTML 表格中显示上述数据,如下所示:

Table

我尝试使用嵌套的 foreach 循环,但无法获得所需的结果。如果我只想显示其中一个数组的键,它会将另一列留空并为后续值创建另一列。

任何想法都将不胜感激。

【问题讨论】:

    标签: php html mysql arrays nested


    【解决方案1】:

    希望对您有所帮助:

    $result = array(
      'Date 1' =>
      array (
        'Object 1 ' =>
        array (
          'Field 1' => "Value 1",
          'Field 2' => "Value 2",
          'Field 3' => "Value 3",
        ),
      ),
      'Date 2' =>
      array (
        'Object 1 in Date 2' =>
        array (
          'Field 1' => "Value 1",
          'Field 2' => "Value 2",
        ),
        'Object 2 in Date 2' =>
        array (
          'Field 1' => "Value 1",
          'Field 2' => "Value 2",
          'Field 3' => "Value 3",
        ),
      ),
    );
    function count_childs($parent_array,$total = 0)
    {
      if(is_array($parent_array))
      {
        foreach ($parent_array as $key => $value) {
         if(is_array($value)){
            $total += count($value);
            count_childs($value,$total);
         }
         else
            $total += 1;
        }
      }
    
      return $total;
    }
    $firstField =false;
    $first = false;
    echo '<div>';
    echo '<table id="r" border=1>';
    echo '<tr>';
    echo '<th>Date</th>';
    echo '<th>Object Type</th>';
     echo '<th>Field</th>';
     echo '<th>Count</th>';
    echo '</tr>';
    foreach ($result as $key=>$value){
      echo "<tr>";
    
      $date_rowspan = count_childs($value);
      echo "<td rowspan= $date_rowspan>$key</td>";
      foreach ($value as $key1 => $value1) {
        $obj_rowspan = count_childs($value1);
        echo "<td rowspan= $obj_rowspan>$key1</td>";
        $first_row = true;
        foreach ($value1 as $key2 => $value2) {
          if($first_row){
            echo "<td>$key2</td><td>$value2</td></tr>";
            $first_row = false;
          }
          else
            echo "<td>$key2</td><td>$value2</td><tr>";
        }
      }
    
      echo "</tr>";
    }
    echo '</table>';
    

    【讨论】:

      猜你喜欢
      • 2015-07-12
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-28
      相关资源
      最近更新 更多