检查数组中是否存在某个值

# in_array

(PHP 4, PHP 5, PHP 7, PHP 8)

in_array — 检查数组中是否存在某个值

### 说明

function in_array(mixed `$needle`, array `$haystack`, bool `$strict` = `false`): bool

大海捞针，在大海（`haystack`）中搜索针（`needle`），如果没有设置 `strict` 则使用宽松的比较。

### 参数

`needle`

  待搜索的值。

  > 注意:

  > 如果 `needle` 是字符串，则比较是区分大小写的。

`haystack`

  待搜索的数组。

`strict`

  如果第三个参数 `strict` 的值为 `true` 则 in_array() 函数还会检查 `needle` 的类型是否和 `haystack` 中的相同。

  > 注意:

  > 在 PHP 8.0.0 之前，`string` `needle` 在非严格模式下将会匹配数组中的值 `0`，反之亦然。这可能会导致不希望的结果。其它类型也存在类似的边缘情况。如果不是绝对确定有关值的类型，请始终使用 `strict` flag 以避免意外行为。

### 返回值

如果找到 `needle` 则返回 `true`，否则返回 `false`。

### 示例

示例 #1 in_array() 示例

    <?php
    $os = array("Mac", "NT", "Irix", "Linux");
    if (in_array("Irix", $os)) {
        echo "Got Irix";
    }
    if (in_array("mac", $os)) {
        echo "Got mac";
    }
    ?>

第二个条件失败，因为 in_array() 是区分大小写的，所以以上程序显示为：

    Got Irix

示例 #2 in_array() 严格类型检查示例

    <?php
    $a = array('1.10', 12.4, 1.13);

    if (in_array('12.4', $a, true)) {
        echo "'12.4' found with strict check\n";
    }

    if (in_array(1.13, $a, true)) {
        echo "1.13 found with strict check\n";
    }
    ?>

以上示例会输出：

    1.13 found with strict check

示例 #3 in_array() 中用数组作为 needle

    <?php
    $a = array(array('p', 'h'), array('p', 'r'), 'o');

    if (in_array(array('p', 'h'), $a)) {
        echo "'ph' was found\n";
    }

    if (in_array(array('f', 'i'), $a)) {
        echo "'fi' was found\n";
    }

    if (in_array('o', $a)) {
        echo "'o' was found\n";
    }
    ?>

以上示例会输出：

    'ph' was found
    'o' was found

### 参见

- array_search() - 在数组中搜索给定的值，如果成功则返回首个相应的键名
- isset() - 检测变量是否已声明并且其值不为 null
- array_key_exists() - 检查数组里是否有指定的键名或索引

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open