比较2个数组的相似性

时间:2010-10-31 22:17:21

标签: php arrays compare

我如何比较PHP中的2个数组,以找出每个数组共有的值。

示例

数组1

Array
(
    [0] => ace
    [1] => one
    [2] => five
    [3] => nine
    [4] => elephant
)

数组2

Array
(
    [0] => elephant
    [1] => seven
    [2] => ace
    [3] => jack
    [4] => queen
)

输出 排列 (     [0] =>高手     [1] =>象 )

3 个答案:

答案 0 :(得分:3)

array_intersect功能可以做到这一点。

答案 1 :(得分:0)

PHP有一个array_intersect()函数可以做到这一点。例如,ypo可以将以下代码放入PHPFiddle中进行测试:

<?php
    $array1 = array('ace', 'one', 'five', 'nine', 'elephant');
    $array2 = array('elephant', 'seven', 'ace', 'jack', 'queen');

    print_r($array1); print('<br>');
    print_r($array2); print('<br>');
    print_r(array_intersect($array1, $array2)); print('<br>');
?>

然后您会看到它可以满足您的要求(经过重新格式化以提高可读性):

Array ( [0] => ace
        [1] => one
        [2] => five
        [3] => nine
        [4] => elephant )

Array ( [0] => elephant
        [1] => seven
        [2] => ace
        [3] => jack
        [4] => queen )

Array ( [0] => ace
        [4] => elephant ) 

请注意,这实际上并没有为您提供连续键,该键似乎来自给定array_intersect()的第一个数组。如果获取连续索引的数组很重要,则可能需要后处理步骤才能对其进行调整。这样的事情应该是一个好的开始(修改原始小提琴以使用连续索引):

<?php
    $array1 = array('ace', 'one', 'five', 'nine', 'elephant');
    $array2 = array('elephant', 'seven', 'ace', 'jack', 'queen');

    print_r($array1); print('<br>');
    print_r($array2); print('<br>');

    $array3 = array();
    foreach (array_intersect($array1, $array2) as $val) {
        array_push($array3, $val);
    }
    print_r($array3); print('<br>');
?>

答案 2 :(得分:-1)

如果你的语言中没有内置交集,但你有哈希,你只需将一个数组的所有元素添加到哈希中,然后通过第二个数组检查它们是否在你刚建立的哈希。

如果您不关心订单,这就是全部。如果您关心订单,它只是一个for循环,看看是否[i] == b [i]