我需要在PHP中找出一个数组是否具有另一个数组的任何值。
例如:
$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');
if (in_array($search_values, $results))
echo 'A value was found';
当然,上面的内容并没有真正起作用(in_array)。
基本上,基于上面的示例,我想检查是否在 $ results 数组中,有 cat , hourse 或狗。
我需要做一个" foreach"在第一个数组中,然后执行" in_array"在2sd中,并返回true;如果找到了?或者有更好的方法吗?
答案 0 :(得分:11)
您可能想要使用array_intersect()
$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');
if ( count ( array_intersect($search_values, $results) ) > 0 ) {
echo 'BINGO';
} else {
echo 'NO MATCHES';
}
答案 1 :(得分:3)
array_intersect()在某些情况下使用大型数组会更慢,因为它返回整个交集,这是不必要的。复杂性将是O(n)。
找到一个匹配的代码:
$arr1 = array('cat', 'dog');
$arr2 = array('cow', 'horse', 'cat');
// build hash map for one of arrays, O(n) time
foreach ($arr2 as $v) {
$arr2t[$v] = $v;
}
$arr2 = $arr2t;
// search for at least one map, worst case O(n) time
$found = false;
foreach ($arr1 as $v) {
if (isset($arr2[$v])) {
$found = true;
break;
}
}
答案 2 :(得分:0)
使用in_array时,您需要指定NEEDLE作为字符串的第一个值。 第二个值是您要检查的数组。
如果要比较两个数组,则需要使用array_intersect。
答案 3 :(得分:0)
这样的事情:
return !empty(array_intersect($search_values, $result));
答案 4 :(得分:0)
使用array_intersect
PHP函数:
<?php
$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');
$present = array_intersect( $search_values, $results );
if( count( $present ) )
{
// your code
echo 'A value was found';
print_r( $present );
}
答案 5 :(得分:0)
我认为这会奏效。我的MAMP设置不在此mac上,因此无法测试。
$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');
foreach($results as $k => $v){
if(in_array($v, $search_values){
$found = $found && true;
}
}
答案 6 :(得分:0)
您可以使用以下代码:
$search_values = array('cat', 'horse', 'dog');
$results = array('cat', 'horse');
if (count(array_intersect($search_values, $results)) > 0 )
echo 'A value was found';
使用array_intersect功能。
以下是working demo: