猿问

具有多维数组的array_diff()

具有多维数组的array_diff()

使用array_diff(),我可以比较和删除相似的项目,但是如果我有以下数组怎么办?

数组1

Array(
    [0] => Array
        (
            [ITEM] => 1
        )

    [1] => Array
        (
            [ITEM] => 2
        )

    [2] => Array
        (
            [ITEM] => 3
        ))

ARRAY2

Array(
    [0] => Array
        (
            [ITEM] => 2
        )

    [1] => Array
        (
            [ITEM] => 3
        )

    [2] => Array
        (
            [ITEM] => 1
        )
    [3] => Array
        (
            [ITEM] => 4
        ))

我想过滤掉类似的物品;结果应该返回4.如何重新排列数组以便可以使用array_diff()


婷婷同学_
浏览 980回答 3
3回答

桃花长相依

您可以使用定义自定义比较功能array_udiff()。function udiffCompare($a, $b){     return $a['ITEM'] - $b['ITEM'];}$arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');print_r($arrdiff);输出:Array (     [3] => Array         (             [ITEM] => 4         ) )这使用并保留了数组的现有结构,我认为这是您想要的。

繁华开满天机

另一个有趣的json_encode技巧(如果您需要“原始”比较第一级数组中的一些复杂值,可能会很有用):// Compare all values by a json_encode$diff = array_diff(array_map('json_encode', $array1), array_map('json_encode', $array2));// Json decode the result$diff = array_map('json_decode', $diff);
随时随地看视频慕课网APP
我要回答