ZetCode

PHP in_array 函数

最后修改于 2025 年 3 月 13 日

PHP 的 in_array 函数检查一个值是否存在于数组中。 它是 PHP 中进行数组搜索和验证的基本工具。

基本定义

in_array 函数在数组中搜索给定的值。 如果找到该值,则返回 true,否则返回 false。

语法:in_array(mixed $needle, array $haystack, bool $strict = false): bool。 strict 参数启用类型检查。

in_array 基本示例

这演示了在简单的数字数组中搜索值。

basic_in_array.php
<?php

$fruits = ['apple', 'banana', 'orange', 'grape'];
$hasBanana = in_array('banana', $fruits);

if ($hasBanana) {
    echo 'Found banana in the array!';
} else {
    echo 'Banana not found.';
}

这在 fruits 数组中搜索 'banana'。 由于它存在,in_array 返回 true 并显示肯定消息。

严格类型检查

使用严格模式可确保在比较过程中值和类型都匹配。

strict_checking.php
<?php

$numbers = [1, 2, 3, '4', 5];
$hasFour = in_array(4, $numbers); // true without strict
$strictHasFour = in_array(4, $numbers, true); // false with strict

echo "Regular check: " . ($hasFour ? 'Found' : 'Not found') . "\n";
echo "Strict check: " . ($strictHasFour ? 'Found' : 'Not found');

在没有严格模式的情况下,PHP 会进行类型转换并找到 '4'。 启用严格模式后,它需要精确的类型匹配,因此 4(整数)≠ '4'(字符串)。

在关联数组中搜索

in_array 搜索值,而不是关联数组中的键。

associative_array.php
<?php

$user = [
    'name' => 'John',
    'age' => 30,
    'email' => 'john@example.com'
];

$hasJohn = in_array('John', $user);
$hasThirty = in_array(30, $user);

echo $hasJohn ? 'Found John' : 'No John'; // Found John
echo "\n";
echo $hasThirty ? 'Found 30' : 'No 30'; // Found 30

这搜索关联数组的值。 在数组值中找到 'John' 和 30,演示了仅搜索值。

多维数组搜索

对于多维数组,将 in_array 与 array_column 结合使用。

multi_dimensional.php
<?php

$users = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 3, 'name' => 'Charlie']
];

// Search in specific column
$hasBob = in_array('Bob', array_column($users, 'name'));

echo $hasBob ? 'Bob exists' : 'Bob not found'; // Bob exists

这使用 array_column 提取 'name' 列,然后在该提取的数组中搜索 'Bob'。 这种组合允许高效搜索。

性能注意事项

对于大型数组,请考虑使用替代数据结构或方法。

performance.php
<?php

$largeArray = range(1, 1000000);
$start = microtime(true);

// Searching at the end (worst case)
in_array(1000000, $largeArray);

$time = microtime(true) - $start;
echo "Search time: " . round($time * 1000, 2) . "ms";

这演示了 in_array 在大型数组上的性能。 对于频繁搜索,请考虑翻转数组或使用哈希映射。

最佳实践

来源

PHP in_array 文档

本教程涵盖了 PHP in_array 函数,并附带了实际示例,展示了它在数组搜索场景中的用法。

作者

我的名字是 Jan Bodnar,我是一位充满激情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 PHP 数组函数