in_array
函數在處理稀疏數組時可能會出現誤判的情況,因為它只會檢查數組中是否存在指定的值,而不會檢查值的索引。
為了解決這個問題,你可以使用 array_flip
將數組的鍵值對進行翻轉,然后再使用 in_array
進行查找。這樣,你就可以通過值的索引來判斷它是否存在于數組中。
以下是一個示例代碼:
$sparseArray = [0 => 'a', 2 => 'c'];
$flippedArray = array_flip($sparseArray);
if (in_array('c', $flippedArray)) {
echo "Value 'c' exists in the sparse array";
} else {
echo "Value 'c' does not exist in the sparse array";
}
輸出結果為:
Value 'c' exists in the sparse array
需要注意的是,這種方法會改變原數組的鍵值對順序,如果需要保持原始順序,可以使用以下代碼:
$sparseArray = [0 => 'a', 2 => 'c'];
$keys = array_keys($sparseArray);
$flippedArray = [];
foreach ($keys as $key) {
$flippedArray[$sparseArray[$key]] = $key;
}
if (in_array('c', $flippedArray)) {
echo "Value 'c' exists in the sparse array";
} else {
echo "Value 'c' does not exist in the sparse array";
}
輸出結果為:
Value 'c' exists in the sparse array