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 的值為 TRUEin_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!');

 

rss_feed