H. *_*nce 2 php arrays comparison
我有2个阵列.我只是想知道数组1中是否存在数组1中的一个值.只需返回布尔值true或false
例A:
$a = array('able','baker','charlie');
$b = array('zebra','yeti','xantis');
预期结果= false
例B:
$a = array('able','baker','charlie');
$b = array('zebra','yeti','able','xantis');
预期结果= true
那么,最好使用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';