2012-12-15 23 views
4

下面是我想顯示一個數組的例子:顯示多級關聯數組作爲表

Array 
(
    [Media] => Array 
    (
     [2012-12-10] => Array 
     (
      [Mentor] => Evan Tobin 
      [Veteran Member] => James 
     ) 

     [2012-12-21] => Array 
     (
      [Mentor] => Evan Tobin 
     ) 
    ) 
    [Website] => Array 
    (
     [2012-12-10] => Array 
     (
      [Mentor] => Evan Tobin 
     ) 

     [2012-12-21] => Array 
     (
      [Mentor] => Evan Tobin 
     ) 
    ) 
) 

因此,大家可以看到它有多個團隊,每隊有他們見面和多個日期每一天都會有不同的人從事不同的工作。使用這個表我想它顯示爲這樣:

Media Team 
Role   || 2012-12-10 || 2012-12-21 
Mentor   || Evan Tobin || Evan Tobin 
Veteran Member || James || 

我使用的foreach語句試過了,但它只是變得太多,只要我得到進一步定。很感謝任何形式的幫助。

+0

你能顯示你試過的代碼嗎? – Touki

+0

當然http://pastebin.com/rCLubHtf –

回答

2

給你:

<?php 
// [your array] 
$tabledata = array(
    'Media' => array(
     '2012-12-10' => array(
      'Mentor' => 'Evan Tobin', 
      'Veteran Member' => 'James' 
     ), 
     '2012-12-21' => array(
      'Mentor' => 'Evan Tobin' 
     ) 
    ), 
    'Website' => array(
     '2012-12-10' => array(
      'Mentor' => 'Evan Tobin' 
     ), 
     '2012-12-21' => array(
      'Mentor' => 'Evan Tobin' 
     ) 
    ) 
); 
// [/your array] 

// [the tables] 
echo '<table border="1">'; 
foreach($tabledata as $teamkey => $teamval){ 
    // [helper] 
    $dates = array(); 
    $roles = array(); 
    foreach($teamval as $datekey => $dateval) { 
     if (!in_array($datekey, $dates)) { 
      $dates[] = $datekey; 
     } 
     foreach($dateval as $rolekey=>$roleval) { 
      if (!in_array($rolekey, $roles)) { 
       $roles[] = $rolekey; 
      } 
     } 
    } 
    // [/helper] 

    // [team name] >> row 1 
    echo '<tr>'; 
    echo '<th align="left" colspan="'.(sizeof($dates)+1).'">'.$teamkey.' Team</th>'; 
    echo '</tr>'; 
    // [/team name] 

    // [role column and date column] >> row 2 
    echo '<tr>'; 
    echo '<td>Role</td>'; 
    foreach($dates as $date) { 
     echo '<td>'.$date.'</td>'; 
    } 
    echo '</tr>'; 
    // [/role column and date column] 

    // [role and team member for each date] >> row 3, 4, 5, ... n 
    foreach($roles as $role) { 
     echo '<tr>'; 
     echo '<td>'.$role.'</td>'; 
     foreach($dates as $date) { 
      echo '<td>'; 
      if (isset($teamval[$date][$role])) { 
       echo $teamval[$date][$role]; // team member name 
      } 
      else { 
       echo '&nbsp;'; // insert blank space for cross browser support 
      } 
      echo '</td>'; 
     } 
     echo '</tr>'; 
    } 
    // [/role and team member for each date] 
} 
echo '</table>'; 
// [/the tables] 

如果你想爲每個團隊獨立的表,你可以把進入循環。

希望這會有所幫助。