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
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);
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
)
- 3 回答
- 0 关注
- 102 浏览
添加回答
举报