2011-03-24 53 views
0

我有一組數據如下PHP multidimesion陣列成HTML表格

$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 

如果有人能幫我解決它。謝謝

+2

你到目前爲止試過了什麼?有什麼問題?你有一個結構良好的數組,它很好地描述你的表。您需要按照描述進行迭代? – fabrik 2011-03-24 05:47:09

+0

http://php.net/manual/en/control-structures.foreach.php ... – 2011-03-24 05:52:16

+0

抱歉,我是新手,無論如何感謝您的指導。 – 2011-03-24 12:45:17

回答

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; 
} 
+0

謝謝你幫助奧什Mansor,這真的幫了我 – 2011-03-24 12:43:29

+0

歡迎你白羊座。很高興知道它對你有所幫助。 – 2011-03-24 19:53:22