查找数组是否至少包含1个值

时间:2012-08-08 16:36:22

标签: php arrays

我需要在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;如果找到了?或者有更好的方法吗?

7 个答案:

答案 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