【问题标题】:Compare 2 arrays for likeness比较 2 个数组的相似度
【发布时间】:2010-10-31 22:17:20
【问题描述】:

如何比较 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] => 大象 )

【问题讨论】:

    标签: php arrays compare


    【解决方案1】:

    array_intersect 函数可以做到这一点。

    【讨论】:

      【解决方案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>');
      ?>
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-18
          • 1970-01-01
          • 2011-08-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多