1
簡短的問題。數組大小> 0,雖然沒有設置密鑰
給出以下示例:
$arr = array();
$arr[0] = false ?: NULL;
var_dump($arr[0]);
var_dump($arr[1]);
var_dump(isset($arr[0]));
var_dump(isset($arr[1]));
var_dump(count($arr));
所得到的輸出是:
NULL
NULL
bool(false)
bool(false)
int(1)
爲何所得的陣列的尺寸爲1而不是0和有任何方法來防止這種使用三元運算符時會發生什麼?這是一個錯誤還是有意的行爲?
btw,我正在運行php 5.3.3-7,但目前無法在其他版本上測試它。
感謝您的快速響應。所以,在使用三元運算符時是否有任何方法可以避免這種情況,或者在這種情況下是否需要使用long if(){}語句? –
@FlorianKernler:如果你想實際取消它,那麼你需要調用'unset()'。這是因爲將數組的元素設置爲NULL是一個有效的選擇並且經常使用。 –
實際上,我在使用三元運算符時正在尋找更像「不要設置爲空」的東西。首先設置變量,然後取消設置對我來說聽起來沒有效率。 –