2016-11-18 86 views
0

當所有的列全部爲零時,是否有切片2d數組的方法? TIA切片2D數組在PHP中

$cars = array(
    array('Cars', 0, 18, 2, 4, 0, 3, 0, 8), 
    array('BMW', 0, 13, 2, 4, 0, 3, 0, 8), 
    array('Saab', 0, 29, 2, 4, 0, 3, 0, 8), 
    array('Land Rover', 0, 15, 2, 4, 0, 3, 0, 8), 
    ); 

echo '<table border="1">'; 
foreach ($cars as $car) { 
    echo '<tr>'; 
    foreach ($car as $key) { 
     echo '<td>'.$key.'</td>'; 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 
+2

你能展示預期的輸出 – user3099298

+0

你想要沒有'0'的子數組嗎? –

+0

不太確定你的問題......你能詳細說明一下嗎? – Kitson88

回答

0

如果列中的每個值的值爲0,以下代碼將刪除列。如果您有其他計劃,例如切片,您仍然可以使用代碼來幫助您確定想要的內容。

我這樣做之前實際打印數組,因爲我不知道這樣做的功能,所以你必須創建一個。

函數array_column()用於檢索列,我將它與array_intersect()進行比較,該函數返回具有相同值的行,並將其與表中的行數進行比較。

$cols = count($cars[0]); 
$rows = count($cars); 
$filter = [0]; // add more unwanted values if you please 

for($col=1; $col<$cols; $col++){ // skip index 0 
    if(count(array_intersect(array_column($cars, $col), $filter))) == $rows){ 
     // We found a column "$col" where every value is "0". 
     foreach($cars as $k => $arr){ 
      // Looping over the main array. 
      unset($arr[$col]); // unset the cloned array. 
      $cars[$k] = $arr; // update the original array with new value. 
     } 
    } 
} 

現在,您可以使用相同的代碼打印您的表格。