У меня нормальный массив, подобный этому
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]); } }
с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>"; } ?>
с<?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)