为了账号安全,请及时绑定邮箱和手机立即绑定

如何从php中数组的右侧删除空值?

如何从php中数组的右侧删除空值?

PHP
手掌心 2022-06-17 11:01:28
我有以下元素的数组[null, null, 1, 4, 6, null, null, null, null]我如何才能从数组中仅删除右侧的空值,使其变为[null, null, 1, 4, 6]我试过array_filter了,但它删除了所有的虚假值$arr = array_filter([null, null, 1, 4, 6, null, null, null, null]);结果是$arr = [1, 4, 6]
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

您可以利用该array_filter结果本身。你得到所有不是的值NULL。所以从那个数组中获取,这就是你对函数的最终限制。last keyarray_slice


<?php


$arr = [null, null, 1, 4, 6, null, null, null, null,null];


$filtered_arr = array_filter($arr);

end($filtered_arr);

$limit = key($filtered_arr) + 1;

$arr = array_slice($arr,0,$limit);

print_r($arr);

演示: https ://3v4l.org/RVcjt


更新:


如果输入数组包含 a 0,则上述答案可能会导致不正确的结果。为了解决这个问题,我们可以只从数组中过滤掉 NULL 值。


<?php


$arr = [null, null, 1, 4, 6, null, 0, null, null,null];


$filtered_arr = array_filter($arr,function($value){

    return !is_null($value);

});

end($filtered_arr);

$limit = key($filtered_arr) + 1;

$arr = array_slice($arr,0,$limit);

print_r($arr);

演示: https ://3v4l.org/S5a96


查看完整回答
反对 回复 2022-06-17
?
白板的微信

TA贡献1883条经验 获得超3个赞

你可以试试下面的代码


$notNull = true;

$item = [null, null, 1, 4, 6, null, null, null, null];

$output = array();

for($i=count($item)-1;$i>=0;$i--){


    if( is_null( $item[$i]) &&  $notNull ){

        continue;

    }

    else{

        $notNull = false;

        $output[] = $item[$i];  

    }

}

$output = array_reverse($output);


查看完整回答
反对 回复 2022-06-17
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您可以使用array_pop()删除最后的项目,直到遇到非空值(或空数组),然后将最后一个项目推回......


$array = [null, null, 1, 4, 6, null, null, null, null];


while( count($array) > 0 && ($end = array_pop($array)) === null );

array_push($array, $end);

print_r($array);

这使...


Array

(

    [0] => 

    [1] => 

    [2] => 1

    [3] => 4

    [4] => 6

)


查看完整回答
反对 回复 2022-06-17
  • 3 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信