2016-01-04 98 views
0

我有這樣相同值的多維數組,回聲多維數組的HTML表格

[documents] => Array 
(
    [0] => Array 
      (
       [doc_id] => 3 
       [doc_type] => driving_licence     
       [expiry_date] => 2015-11-26 
       [added_date] => 2015-11-16 
      ) 

    [1] => Array 
      (
       [doc_id] => 3 
       [doc_type] => driving_licence 
       [expiry_date] => 2015-11-26 
       [added_date] => 2015-11-16 
      ) 

) 

所以現在我需要回應這個陣列中的HTML表單<tr>

這是我試了一下:

foreach ($userData as $key => $value) { 
    $i=0; 
    foreach ($value['documents'] as $k => $v) { 
     $i++; 
     $html = "<tr>\n"; 
     $html .= " <td class='center'>{$i}</td>"; 
     $html .= " <td>{$v['doc_type']}</td>"; 
     $html .= " <td>{$v['expiry_date']}</td>"; 
     $html .= " <td>{$v['added_date']}</td>"; 
     $html .= "</tr>\n"; 

     echo $html; 
    } 
} 

但其重複表<tr>有相同的價值觀。

有人可以告訴我如何避免這種情況? 謝謝。

+2

這是相同的數據,因爲您的數組包含2個相同的元素。 – Darren

+2

看起來你想刪除重複的值。見:http://stackoverflow.com/q/307674/3933332 – Rizier123

+0

@Darren,是的,它有相同的數據。回聲時我如何檢測相同的數據? – user3733831

回答

1

As requested,這裏是你的一個例子。

$userData = $input = array_map("unserialize", array_unique(array_map("serialize", $userData))); 

foreach ($userData as $key => $value) { 
    $i=0; 
    foreach ($value['documents'] as $k => $v) { 
     $i++; 
     $html = "<tr>\n"; 
     $html .= " <td class='center'>{$i}</td>"; 
     $html .= " <td>{$v['doc_type']}</td>"; 
     $html .= " <td>{$v['expiry_date']}</td>"; 
     $html .= " <td>{$v['added_date']}</td>"; 
     $html .= "</tr>\n"; 

     echo $html; 
    } 
} 

這會給你 <tr>行的表。

+0

複製並粘貼這行的工作'$ userData = $ input = array_map(「unserialize」,array_unique(array_map(「serialize」,$ userData))); ' – user3733831

+0

我試過去掉'$ input'就像這樣'$ userData = array_map(「unserialize」,array_unique(array_map(「serialize」,$ userData)));'。但它對我不起作用。 – user3733831

+0

@ user3733831更改爲 - '$ userData ['documents'] = array_map(「unserialize」,array_unique(array_map(「serialize」,$ userData ['documents'])));' – Darren

0

這是方式,我會做什麼,你正在嘗試做的:

$movies = array 
    (
     array('Office Space' , 'Comedy' , 'Mike Judge'), 
     array('Matrix' , 'Action' , 'Andy/Larry Wachowski'), 
     array('Lost In Translation' , 'Comedy/Drama' , 'Sofia Coppola'), 
     array('A Beautiful Mind' , 'Drama' , 'Ron Howard'), 
     array('Napoleon Dynamite' , 'Comedy' , 'Jared Hess') 
    ); 

    echo "<table border=\\"1\\">"; 
    echo "<tr><th>Movies</th><th>Genre</th><th>Director</th></tr>"; 
    for ($row = 0; $row < count($movies); $row++) 
    { 
     echo "<tr><td>"; 
     for ($column = 0; $column < count($movies); $column++) 
     { 
     echo $movies[$row][$column] ; 
     } 
     echo "<td></tr>"; 
    } 
+2

用於計數是非常原始的,foreach更好 – Phiter

+0

@PiterFernandes您對「for」的證據是什麼證據是出於好奇? – Rasclatt

+0

您不需要使用計數器來檢索數據,也可以輕鬆使用鍵和值。答案中描述的'for'將在每個循環中檢查數組的大小。 Foreach不會這樣做。 – Phiter