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 關注
- 115 瀏覽
添加回答
舉報