【问题标题】:PHP multidimesion array into html tablePHP多维数组转换成html表
【发布时间】:2011-03-24 05:44:05
【问题描述】:

我有一个如下的数据数组

   $array = array(
       'xcol'=>array('no','head','head1','head2'=>array(
          'o1','o2'
       ),'head3'), // => convert into th
       'ycol'=>array(                                      // => convert into td
          '1'=>array(
              'name1'=>array('data1',array('a','1'),'data3')
          ),
          '2'=>array(
              'name2'=>array('data1',array('b','2'),'data3')
          ),
          '3'=>array(
              'name3'=>array('data1',array('c','3'),'data3')
          ),
          '4'=>array(
              'name4'=>array('data1',array('d','4'),'data3')
          ),
          '5'=>array(
              'name5'=>array('data1',array('e','5'),'data3')
          )
       )
    );

我想把它变成如下的html表格。

**no** | **head**  | head1 |  head2  | head3
       |           |       | o1 | o2 |
--------------------------------------------
**1**  | **name1** | data1 | a  | 1  | data3
**2**  | **name2** | data1 | b  | 2  | data3
**3**  | **name3** | data1 | c  | 3  | data3
**4**  | **name4** | data1 | d  | 4  | data3
**5**  | **name5** | data1 | e  | 5  | data3

如果有人可以帮我解决它。谢谢

【问题讨论】:

  • 到目前为止你尝试过什么?有什么问题?您有一个结构良好的数组,可以很好地描述您的表格。您需要按照说明进行迭代吗?
  • 对不起,我是新手,谢谢您的指导。

标签: php datatable multidimensional-array html-table


【解决方案1】:

这是我目前所能想到的。您可以通过组合函数来进一步简化它,还可以使用递归函数遍历所有数组元素。希望这会有所帮助。

// Separate the xcol & ycol 
$array_x = $array['xcol'];
$array_y = $array['ycol'];

create_table(array_x($array_x),array_y($array_y));

function array_x($input = array()){
    $str = '<tr>';
    if (is_array($input)){
        $str2 .= "<tr>";
        foreach ($input as $key=>$value){
            if (is_array($value)){
                $str .= "<th colspan='2'>".$key."</th>";
                foreach ($value as $k=>$v){
                    $str2 .= "<th>".$v."</th>"; 
                }
            }else{
                $str .= "<th>".$value."</th>";
                $str2 .= "<th>&nbsp;</th>";
            }
        }
    }
    $str2 .= '</tr>'."\n";
    $str .= '</tr>'."\n".$str2;
    return $str;
}

function array_y($input = array()){
    $str = "";
    if (is_array($input)){
        foreach ($input as $key=>$value){
            if (is_array($value)){
                $str .= "<tr><td>".$key."</td>";
                foreach ($value as $k=>$v){
                    if (is_array($v)){
                        $str .= "<td>".$k."</td>";
                        foreach ($v as $k1=>$v1){
                            if (is_array($v1)){
                                foreach ($v1 as $k2=>$v2){
                                    $str .= "<td>".$v2."</td>"; 
                                }
                            }else{
                                $str .= "<td>".$v1."</td>"; 
                            }
                        }
                    }else{
                        $str .= "<td>".$v."</td>"; 
                    }
                }
            }else{
                $str .= "<td>".$value."</td>";
            }
        }
    }
    $str .= '</tr>'."\n";
    return $str;
}

function create_table($str_x,$str_y){
    $str = '<table border="1">'."\n";
    $str .=  $str_x.$str_y;
    $str .= '</table>'."\n";
    echo $str;
}

【讨论】:

  • 感谢您帮助 Osh Mansor,这对我很有帮助
猜你喜欢
  • 2020-02-28
  • 2012-05-21
  • 1970-01-01
  • 2011-11-15
  • 2020-02-06
  • 2019-09-22
  • 1970-01-01
  • 2014-06-28
  • 2013-08-03
相关资源
最近更新 更多