【问题标题】:Delete duplicates of values of two nested multidimensional arrays删除两个嵌套多维数组的重复值
【发布时间】:2019-06-18 21:11:37
【问题描述】:

我正在努力使用 array_diff 函数和解决我的问题的另一种解决方案,但没有什么能给我想要的效果..

我有两个从数据库返回的多维数组(嵌套深度未知),并将编码和解码为 JSON。

数组如下所示:

Array ( 
    [0] => Array ( [id] => 1 [lft] => 1  [rgt] => 2  ) 
    [1] => Array ( [id] => 2 [lft] => 3  [rgt] => 4  )
    [2] => Array ( [id] => 3 [lft] => 5  [rgt] => 6  )
    [3] => Array ( [id] => 4 [lft] => 7  [rgt] => 16 )
    [4] => Array ( [id] => 5 [lft] => 8  [rgt] => 9  )
    [5] => Array ( [id] => 6 [lft] => 10 [rgt] => 11 )
    [6] => Array ( [id] => 7 [lft] => 12 [rgt] => 15 )
    [7] => Array ( [id] => 8 [lft] => 13 [rgt] => 14 )
    [8] => Array ( [id] => 9 [lft] => 17 [rgt] => 18 )
)

Array ( 
    [0] => Array ( [id] => 17 [lft] => 1 [rgt] => 2  ) 
    [1] => Array ( [id] => 3  [lft] => 3 [rgt] => 10 )
    [2] => Array ( [id] => 9  [lft] => 4 [rgt] => 9  )
    [3] => Array ( [id] => 24 [lft] => 5 [rgt] => 6  )
    [4] => Array ( [id] => 81 [lft] => 7 [rgt] => 8  )
)

现在我想合并这两个数组,以便我得到第一个数组,其中没有与第二个数组中的元素具有相同 id 的元素。 结果应该是这样的:

Array ( 
    [0] => Array ( [id] => 1 [lft] => 1  [rgt] => 2  ) 
    [1] => Array ( [id] => 2 [lft] => 3  [rgt] => 4  )
    [3] => Array ( [id] => 4 [lft] => 7  [rgt] => 16 )
    [4] => Array ( [id] => 5 [lft] => 8  [rgt] => 9  )
    [5] => Array ( [id] => 6 [lft] => 10 [rgt] => 11 )
    [6] => Array ( [id] => 7 [lft] => 12 [rgt] => 15 )
    [7] => Array ( [id] => 8 [lft] => 13 [rgt] => 14 )
)

例如,我尝试过使用 this 修改函数的其他解决方案方法,但似乎没有任何效果。有人可以帮帮我吗?

【问题讨论】:

    标签: php multidimensional-array nested array-difference


    【解决方案1】:

    你说得对,你需要array_udiff

    试试这个:

    $res = array_udiff($array1, $array2, function ($a, $b) {
        if ($a['id'] < $b['id']) {
            return -1;
        } elseif ($a['id'] > $b['id']) {
            return 1;
        } else {
            return 0;
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多