【问题标题】:compare two arrays and find the number of same elements [duplicate]比较两个数组并找到相同元素的数量[重复]
【发布时间】:2013-01-28 08:11:27
【问题描述】:

可能重复:
Find common values in multiple arrays with PHP

我有两个具有相同索引的数组,例如 ,

$a=Array
(
    [2013-01-15] => Array
        (
            [0] =>1001 
            [1] => 1002
            [2] => 1003
            [3] => 1004
            [4] => 1005
            [5] => 1006
            [6] => 1007
)
and 
$b=Array
(
    [2013-01-15] => Array
        (
            [0] =>1001 
            [1] => 
            [2] => 1003
            [3] => 
            [4] => 
            [5] => 1007
            [6] => 
)

现在我想比较这些数据并找出有多少相同的元素。在这种情况下,共有三个元素。

【问题讨论】:

  • 预期输出是什么?

标签: php arrays multidimensional-array


【解决方案1】:

使用array_intersect

$result = array_intersect($a['2013-01-15'], $b['2013-01-15']);

来自manual的示例:

$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);  

Array
(
    [a] => green
    [0] => red
)

【讨论】:

    【解决方案2】:

    你知道 PHP 的 array_intersect 函数吗?这可能是您正在寻找的...

    array array_intersect ( array $array1 , array $array2 [, array $ ... ] )

    array_intersect() retourne un tableau contenant toutes les valeurs de array1 qui sont présentes dans tous les autres arguments array2, ..., etc. Notez que les clés sont préservées.

    不过,您将需要一个平面数组。您可以查看有关如何执行此操作的问题:How to Flatten a Multidimensional Array?

    在您的情况下,只要您的数组始终由数组值组成,并且您需要计算其中的重复项:

    $a = array( '2012-04' => array( 10, 50, 60, 80 ) );
    $b = array( '2012-04' => array( 10, 40, 80 ) );
    
    $count = 0;
    foreach ( $a as $key => $array1 ) {
      if ( array_key_exists( $key, $b ) ) {
        $array2 = $b[ $key ];
        $count += count( array_intersect( $array1, $array2 ) );
      }
    }
    

    【讨论】:

    • 数据有两层深,array_intersect不能原样使用。
    • 我知道。然而,展平阵列并不是最难的部分。虽然编辑了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多