У меня есть массив
Массив ([0] = > 0 [1] = > [2] = > 3 [3] = > )
Я хочу удалить из него нулевые значения, и результат должен выглядеть следующим образом:
Массив ([0] = > 0 [1] = > 3) Я не хочу удалять значение 0 из массива.
У меня есть массив
Массив ([0] = > 0 [1] = > [2] = > 3 [3] = > )
Я хочу удалить из него нулевые значения, и результат должен выглядеть следующим образом:
Массив ([0] = > 0 [1] = > 3) Я не хочу удалять значение 0 из массива.
это сделает трюк:
array_filter($arr, function($var){return !is_null($var);} );
Пример кода: http://3v4l.org/icEDa
для более старых версий (php < 5.3):
function is_not_null ($var) { return !is_null($var); }
$filtered = array_filter($arr, 'is_not_null');
Пример кода: http://3v4l.org/CKrYO
Вы можете использовать array_filter()
, который избавится от пустых нулевых значений из массива
print_r(array_filter($arr, 'strlen'));
Вы можете просто пропустить его.
<?php
foreach ($array as $i=>$row) {
if ($row === null)
unset($array[$i]);
}
Если вы хотите переиндексировать массив, чтобы удалить промежутки между ключами, вы можете просто использовать новый массив:
<?php
$array2 = array();
foreach ($array as $row) {
if ($row !== null)
$array2[] = $row;
}
$array = $array2;
<?php
$arr = array( 0 => 0, 1=>null, 2=>3, 3=>null);
foreach ($arr as $key=>$val) {
if ($val === null)
unset($arr[$key]);
}
$new_arr = array_values($arr);
print_r($new_arr);
?>
Вывод:
Array
(
[0] => 0
[1] => 3
)
Теперь вы находитесь в мире проблем, потому что не так просто отличить нуль от 0 от false от "" от 0.0. Но не волнуйтесь, это разрешимо:
$result = array_filter( $array, 'strlen' );
Это ужасно само по себе, но, похоже, работает.
EDIT:
Это плохой совет, потому что трюк опирается на странный угловой случай:
Как вы это делаете, это примерно так:
$my_array = array(2, "a", null, 2.5, NULL, 0, "", 8);
function is_notnull($v) {
return !is_null($v);
}
print_r(array_filter($my_array, "is_notnull"));
Это хорошо читаемо.
просто
$keys=array_keys($yourArray,NULL);
if(!empty($keys))
{
foreach($keys as $key)
{
unset($yourArray[$key]);
}
}
var_dump($yourarray);