在 php 中切片二维数组

slice 2d array in php

有没有办法在所有列都为零的情况下对二维数组进行切片? TIA

$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>';

如果列中的每个值都具有值 0,则以下代码将删除这些列。如果您有其他计划,例如切片,您仍然可以使用代码来帮助您确定您想要的内容。

我在实际打印出数组之前执行此操作,因为我不只是知道执行此操作的函数,因此您必须创建一个。

函数 array_column() 用于检索列,我将其与 array_intersect() 具有相同值的 returns 行进行比较,并将其与您的行数进行比较table.

$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.
        }
    }
}

现在您可以使用之前的代码打印 table。