在使用 PHP 的 in_array
函數時,有一些常見的錯誤可能會導致意外的結果或行為
in_array
函數的參數是正確的。in_array
的第一個參數應該是要搜索的值(needle),第二個參數應該是數組(haystack)。$array = array("apple", "banana", "cherry");
if (in_array("apple", $array)) {
echo "Found apple!";
}
in_array
默認是區分大小寫的。如果需要不區分大小寫的搜索,請將第三個參數設置為 true
。$array = array("Apple", "Banana", "Cherry");
if (in_array("apple", $array, true)) {
echo "Found apple!";
}
in_array
只檢查數組的值,而不檢查鍵名。如果需要檢查鍵名,請使用 array_key_exists
函數。$array = array("a" => "apple", "b" => "banana", "c" => "cherry");
if (array_key_exists("a", $array)) {
echo "Found apple!";
}
in_array
可能會因為類型轉換而產生意外的結果。例如,當數組中包含零(0)或空字符串時,它們可能會被誤認為是相等的。為了避免這種情況,請使用 in_array
的第三個參數 strict
設置為 true
,以進行嚴格類型比較。$array = array(0, 1, 2);
if (in_array("0", $array, true)) {
echo "Found zero!";
} else {
echo "Zero not found.";
}
in_array
不能直接用于搜索對象數組。如果需要在對象數組中搜索特定屬性的值,可以使用 array_filter
函數配合匿名函數實現。class Fruit {
public $name;
public function __construct($name) {
$this->name = $name;
}
}
$fruits = array(
new Fruit("apple"),
new Fruit("banana"),
new Fruit("cherry")
);
$searchName = "apple";
$found = array_filter($fruits, function ($fruit) use ($searchName) {
return $fruit->name === $searchName;
});
if (!empty($found)) {
echo "Found apple!";
}
遵循上述建議,可以避免在使用 PHP 的 in_array
函數時出現常見錯誤。