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