PHP:in_array查找數組中是否存在某個值
最近更新時間 2020-01-03 13:00:18
in_array()查找數組中是否存在某個值。
語法
in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool
常用示例
搜索字符串是否在數組中
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Got Irix";
}
//Got Irix
in_array()函數區分大小寫
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("mac", $os)) {
echo "Got Mac";
}
以上示例不會輸出任何信息,in_array()區分大小寫。
in_array()函數的坑
如果第三個參數 $strict 的值為 TRUE 則in_array()函數還會檢查 $needle 的類型是否和 $haystack 中的相同。
默認情況下$strict 的值為 FALSE 則不進行類型檢測,出現以下錯誤:
<?php
$os = array('Mac', 'Linux', 0);
if(in_array('docs', $os)) {
echo 'Yes';
}
//Yes
以上示例會顯示Yes,表示'docs'存在數組中,與實際情況矛盾。因為數組中有0元素。所以最好確保數組中都是字符串,或者設置$strict 的值為 TRUE。
快速搜索某個值是否存在
建議大數據量查找不使用in_array()函數,使用isset()函數性能更高。
<?php
$slow = array('apple', 'banana', 'orange');
if (in_array('banana', $slow))
print('Found it!');
$fast = array('apple' => 'apple', 'banana' => 'banana', 'orange' => 'orange');
if (isset($fast['banana']))
print('Found it!');