PHP比较两个数组中每个存在的值

H. *_*nce 2 php arrays comparison

我有2个阵列.我只是想知道数组1中是否存在数组1中的一个值.只需返回布尔值true或false

例A:

$a = array('able','baker','charlie');
$b = array('zebra','yeti','xantis');
Run Code Online (Sandbox Code Playgroud)

预期结果= false

例B:

$a = array('able','baker','charlie');
$b = array('zebra','yeti','able','xantis');
Run Code Online (Sandbox Code Playgroud)

预期结果= true

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

谢谢!

Tha*_*hai 5

一个简单的方法是使用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
Run Code Online (Sandbox Code Playgroud)

或者你可以做一个简单的功能来检查是否至少有一个交叉点.这比第一个更快,因为它不必找到所有的交叉点.当它找到一个时,它在那一刻返回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';
Run Code Online (Sandbox Code Playgroud)