in_array()
函數在 PHP 中用于檢查一個值是否存在于數組中。它返回 true
如果找到了該值,否則返回 false
。以下是一些可能導致 in_array()
返回 false
的情況:
in_array()
默認使用嚴格比較(===
),這意味著它既檢查值也檢查類型。例如,in_array(1, [1, '1', 2])
將返回 false
,因為雖然數值相同,但類型不同(一個是整數,另一個是字符串)。false
作為要查找的值。在 PHP 中,false
在布爾上下文中被視為 false
,在字符串上下文中被視為空字符串,在數值上下文中被視為 0
。因此,在這些情況下,in_array(false, [0, '', '0'])
將返回 true
,而 in_array(false, [])
將返回 false
。要避免類型不匹配導致的錯誤,可以在 in_array()
函數中使用 null coalesce()
或類型轉換來確保比較時使用相同的類型。例如:
$value = null;
$array = [0, '0', 1];
if (in_array($value === null ? null : (string)$value, $array)) {
// 值存在于數組中
} else {
// 值不存在于數組中
}