当所有列都为零时,有没有办法切片2d数组? 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 :(得分: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.
}
}
}
现在,您可以使用与之相同的代码打印表格。