在 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。
有没有办法在所有列都为零的情况下对二维数组进行切片? 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。