X

PHP array_shift 遇到 0 與 false 會中斷

PHP 的 array_shift 是將 Array 的 Value 一個一個取出來並移除(從小到大取值)

但是遇到一個奇怪的問題,若值遇到0,之後的值就全部不見了~

例如:

$stack = ['orange', 0, 'apple', 'raspberry'];
while ($v = array_shift($stack)) {
echo $v . ' '; // 印出 orange 後,就不會在印任何值
}

註:0、false 都是一樣情況

PHP array_shift 遇到 0 與 false 會中斷

看起來應該是 array_shift() 遇到 value 是 0 或 false,程式就會結束~

<?php
$stack = ['orange', false, 'apple', 'raspberry'];
// $stack 裡面的值若有 0 或 false,後面的值就都不會執行

// 靠 array_filter 把 val = 0 和 false 過濾掉
$stack = array_filter($stack, function($val) {
return $val !== 0 && $val !== false && $val !== '0';
});

// 這樣子就可以正確印出
while ($v = array_shift($stack)) {
echo $v . ' '; // orange, apple, raspberry
}
?>

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post