ломтик 2d массив в переполнении стека

Есть ли способ нарезать 2d массив, когда все столбцы все нули? ТИА

$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, Если у вас были другие планы, такие как нарезка, вы все равно можете использовать код, чтобы помочь вам определить, что вы хотите.

Я делаю это перед тем, как распечатать массив, так как я не просто знаю функцию для этого, поэтому вам придется ее создать.

Функция 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.
}
}
}

Теперь вы можете распечатать таблицу с тем же кодом, что и у вас.

0

Другие решения

Других решений пока нет …