在php html的相应列中显示嵌套的数组键值

在php html的相应列中显示嵌套的数组键值,php,html,mysql,arrays,nested,Php,Html,Mysql,Arrays,Nested,我有一个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 (

我有一个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表格中显示上述数据,如下所示:

我尝试使用嵌套的foreach循环,但是没有得到期望的结果。如果我只想只显示其中一个数组的键,它会将另一列留空,并创建另一列以继续值


如果您有任何想法,我们将不胜感激。

希望这能帮助您:

$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>';
$result=array(
“日期1”=>
排列(
“对象1”=>
排列(
“字段1”=>“值1”,
“字段2”=>“值2”,
“字段3”=>“值3”,
),
),
“日期2”=>
排列(
“日期2中的对象1”=>
排列(
“字段1”=>“值1”,
“字段2”=>“值2”,
),
'日期2中的对象2'=>
排列(
“字段1”=>“值1”,
“字段2”=>“值2”,
“字段3”=>“值3”,
),
),
);
函数计数\u childs($parent\u数组,$total=0)
{
if(is_数组($parent_数组))
{
foreach($key=>$value的父数组){
if(是_数组($value)){
$total+=计数($value);
儿童计数($value,$total);
}
其他的
$total+=1;
}
}
返回$total;
}
$firstField=false;
$first=false;
回声';
回声';
回声';
回音“日期”;
回声“对象类型”;
回声“场”;
回声“计数”;
回声';
foreach($结果为$key=>$value){
回声“;
$date\u rowspan=count\u childs($value);
回显“$key”;
foreach($key1=>$value1的值){
$obj_rowspan=计数子女($value1);
回显“$key1”;
$first_row=true;
foreach($value1作为$key2=>$value2){
如果($第一行){
回显“$key2$value2”;
$first_row=false;
}
其他的
回显“$key2$value2”;
}
}
回声“;
}
回声';