【问题标题】:Compare multidimensional arrays with array_diff [duplicate]将多维数组与 array_diff 进行比较 [重复]
【发布时间】:2016-04-16 17:50:41
【问题描述】:

我有 2 个数组,然后我想通过电子邮件键过滤它们。像这样

数组1

array (size=5)
  0 => 
     array (size=3)
        'name' => string 'Client 1' (length=8)
        'email' => string 'client1@gmail.com' (length=17)
  1 => 
     array (size=3)
        'name' => string 'Client 2' (length=8)
        'email' => string 'client2@gmail.com' (length=17)

数组2

array (size=3)
   0 => 
      array (size=4)
        'name' => string 'Client 3' (length=8)
        'email' => string 'client2@gmail.com' (length=17)
        'role_id' => float 3
   1 => 
      array (size=4)
        'name' => string 'Client 6' (length=8)
        'email' => string 'client6@gmail.com' (length=17)
        'role_id' => float 2
   2 => 
      array (size=4)
        'name' => string 'Client 7' (length=8)
        'email' => string 'client7@gmail.com' (length=17)
        'role_id' => float 3

我想过滤掉类似的电子邮件项目。结果如何返回如下:

array (size=2)
   0 => 
      array (size=4)
        'name' => string 'Client 6' (length=8)
        'email' => string 'client6@gmail.com' (length=17)
        'role_id' => float 2
   1 => 
      array (size=4)
        'name' => string 'Client 7' (length=8)
        'email' => string 'client7@gmail.com' (length=17)
        'role_id' => float 3

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    你可以使用array_udiff

    If 将过滤第一个数组,通过将其元素与使用给定回调传递给array_udiff 的其他数组的元素进行比较。当回调为一对返回 0 时,该元素将从结果中删除。

    $result = array_udiff($arr2, $arr1, function ($a, $b) {
        return strcmp($a['email'], $b['email']);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-03
      • 2013-09-25
      • 2015-08-12
      • 2018-06-28
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多