比较2个阵列的肖像(Compare 2 arrays for likeness)

2019-10-30 04:17发布

我如何比较2个阵列在PHP中发现哪些值每个阵列有共同之处。

例子是

阵列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] => ACE [1] =>象)

Answer 1:

array_intersect功能可以做到这一点。



Answer 2:

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>');
?>


Answer 3:

如果你在那里是没有内置路口的语言,但你有哈希,你只需要添加一个阵列中的所有元素到散,然后再通过第二个阵列检查,看看他们是否在哈希你刚刚建立起来的。

这是所有的,如果你不关心顺序。 如果你关心顺序,它只是一个for循环看,如果[I] == B [I]



文章来源: Compare 2 arrays for likeness