【问题标题】:Php array unique comparing 2 typesphp数组唯一比较2种类型
【发布时间】:2014-04-01 04:40:00
【问题描述】:

我有来自 excel 的数据(超过 10000 条),数据格式看起来像,

例子:

Message | Number 

Test 1    021
Test 2    033
Test 3    022
Test 3    022
Test 3    033
Test 2    022
Test 2    021

接受的输入应该是

same number & different message
different number & same message
different number & different message

我正在尝试使用数组进行验证,我尝试了array_unique,但我只能使用一种类型,

$arrayCon[$i]=array("message"=>$message, "number"=>$number);
$realArray=array_unique($arrayCon["number"]);

如何比较 1 个数组中的 2 个类型?

【问题讨论】:

    标签: php arrays compare unique


    【解决方案1】:

    您需要在数组本身上应用array_unique(),指定SORT_REGULAR 标志来比较每个元素:

    $realArray = array_unique($arrayCon, SORT_REGULAR)
    

    【讨论】:

      【解决方案2】:

      您可以利用 JSON,从而使数据行成为字符串,因此 array_unique 可用:

      $source=array();
      foreach($database as $row)
      {
          $source[]=json_encode(array("message"=>$row[0],"number"=>$row[1]));
      }
      $unique=array_map(function($str){
          return json_decode($str,true);
      },array_unique($source));
      

      Online demo
      (我现在有一个代理,它似乎与 3v4l.org 的结果输出混淆了。如果您看不到结果,请告诉我)

      print_r 在我的本地主机输出:

      Array
      (
          [0] => Array
              (
                  [message] => Test 1
                  [number] => 021
              )
      
          [1] => Array
              (
                  [message] => Test 2
                  [number] => 033
              )
      
          [2] => Array
              (
                  [message] => Test 3
                  [number] => 022
              )
      
          [4] => Array
              (
                  [message] => Test 3
                  [number] => 033
              )
      
          [5] => Array
              (
                  [message] => Test 2
                  [number] => 022
              )
      
          [6] => Array
              (
                  [message] => Test 2
                  [number] => 021
              )
      
      )
      

      【讨论】:

      • 这从 5.2.9 开始完全没有必要,因为您可以在 array_unique() 上使用 SORT_REGULAR 标志来实现相同的结果。
      猜你喜欢
      • 2018-11-20
      • 2019-09-28
      • 2019-09-26
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多