Ответ 1
array_filter
делает это. Если вы не предоставляете функцию обратного вызова, она фильтрует все значения равными false (логическое преобразование).
У меня нормальный массив, подобный этому
Array
(
[0] => 0
[1] => 150
[2] => 0
[3] => 100
[4] => 0
[5] => 100
[6] => 0
[7] => 100
[8] => 50
[9] => 100
[10] => 0
[11] => 100
[12] => 0
[13] => 100
[14] => 0
[15] => 100
[16] => 0
[17] => 100
[18] => 0
[19] => 100
[20] => 0
[21] => 100
)
Мне нужно удалить все 0 из этого массива, возможно ли это с помощью функции массива PHP
array_filter
делает это. Если вы не предоставляете функцию обратного вызова, она фильтрует все значения равными false (логическое преобразование).
Вы можете просто перебрать массив и сбросить любые элементы, которые в точности равны 0
foreach ($array as $array_key => $array_item) {
if ($array[$array_key] === 0) {
unset($array[$array_key]);
}
}
Первый метод:
<?php
$array = array(0,100,0,150,0,200);
echo "<pre>";
print_r($array);
echo "</pre>";
foreach($array as $array_item){
if($array_item==0){
unset($array_item);
}
echo"<pre>";
print_r($array_item);
echo"</pre>";
}
?>
Второй метод: Используйте array_diff
<?php
$array = array(0,100,0,150,0,200);
$remove = array(0);
$result = array_diff($array, $remove);
echo"<pre>";
print_r($result);
echo"</pre>";
?>
бит позже, но скопируйте и вставьте:
$array = array_filter($array, function($a) { return ($a !== 0); });
Если вы не заботитесь о сохранении ключа для корреляции данных, вы можете использовать этот однолинейный трюк:
<?php
$a = array(0, 150, 0, 100, 0, 100, 0, 100);
$b = explode('][', trim(str_replace('[0]', '', '['.implode('][', $a).']'), '[]'));
print_r($b); // Array ([0] => 150 [1] => 100 [2] => 100 [3] => 100)
Вы можете использовать это:
$result = array_diff($array, [0]);
$array = array_filter($array, function($a) { return ($a !== 0); });"
если вы хотите удалить ноль и пустые значения, правильный код:
$array = array_filter($array, function($a) { return ($a !== 0 AND trim($a) != ''); });
Это также является эффективным решением для удаления нежелательной ценности.
<?php
$array = array(0,100,0,150,0,200);
foreach($array as $a){
if (false !== $key = array_search("0", $array)){
unset($array[$key]);
}
}
print_r($array);
?>