PHP 比较 2 个数组的值是否存在

标签 php arrays comparison

我有 2 个数组。我只是想知道数组 1 中的值之一是否存在于数组 2 中。无非就是返回一个 bool 值 true 或 false

示例 A:

$a = array('able','baker','charlie');
$b = array('zebra','yeti','xantis');

预期结果=假

示例 B:

$a = array('able','baker','charlie');
$b = array('zebra','yeti','able','xantis');

预期结果=真

那么,最好使用 array_diff() 或 array_search() 或其他一些简单的 PHP 函数吗?

谢谢!

最佳答案

一个简单的方法是使用 array_intersect 并检查它是否不为空。

$a = array('able','baker','charlie');
$b = array('zebra','yeti','xantis');

echo !!array_intersect($a, $b) ? 'true' : 'false'; //false

$a = array('able','baker','charlie');
$b = array('zebra','yeti','able','xantis');

echo !!array_intersect($a, $b) ? 'true' : 'false'; //true

或者你可以做一个简单的函数来检查是否至少有一个交叉点。这比第一个更快,因为它不必找到所有的交叉点。当它找到一个时,它会立即返回 true。

function check_for_intersect($a, $b) {
    $c = array_flip($a);
    foreach ($b as $v) {
        if (isset($c[$v])) return true;
    }
    return false;
}

$a = array('able','baker','charlie');
$b = array('zebra','yeti','xantis');

echo check_for_intersect($a, $b) ? 'true' : 'false';

$a = array('able','baker','charlie');
$b = array('able','zebra','yeti','xantis');

echo check_for_intersect($a, $b) ? 'true' : 'false';

关于PHP 比较 2 个数组的值是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692016/

相关文章:

php - 什么是更有效的 PHP 开发开发/测试/生产环境设置..?

php - 我应该为 web 使用 Drupal 还是 Kohana 类型的框架 "application"

arrays - VBA 中的属性数组

javascript - 使用按钮从数组打印

python - 如何将 2D numpy 数组中的元素旋转 'n' 个单位?

algorithm - 比较算法

php - 从 mysql 查询中分割 php 数组

C# 与 C++ 通过引用处理传递

bash - 将 bash 函数的返回值评估为整数

php - 那里有适用于 PHP 程序员的往返软件吗?