How to remove duplicate values from a multi-dimensional array in PHP How to remove duplicate values from a multi-dimensional array in PHP arrays arrays

How to remove duplicate values from a multi-dimensional array in PHP


Here is another way. No intermediate variables are saved.

We used this to de-duplicate results from a variety of overlapping queries.

$input = array_map("unserialize", array_unique(array_map("serialize", $input)));


Since 5.2.9 you can use array_unique() if you use the SORT_REGULAR flag like so:

array_unique($array, SORT_REGULAR);

This makes the function compare elements for equality as if $a == $b were being used, which is perfect for your case.

Output

Array(    [0] => Array        (            [0] => abc            [1] => def        )    [1] => Array        (            [0] => ghi            [1] => jkl        )    [2] => Array        (            [0] => mno            [1] => pql        ))

Keep in mind, though, that the documentation states:

array_unique() is not intended to work on multi dimensional arrays.


I had a similar problem but I found a 100% working solution for it.

<?php    function super_unique($array,$key)    {       $temp_array = [];       foreach ($array as &$v) {           if (!isset($temp_array[$v[$key]]))           $temp_array[$v[$key]] =& $v;       }       $array = array_values($temp_array);       return $array;    }$arr="";$arr[0]['id']=0;$arr[0]['titel']="ABC";$arr[1]['id']=1;$arr[1]['titel']="DEF";$arr[2]['id']=2;$arr[2]['titel']="ABC";$arr[3]['id']=3;$arr[3]['titel']="XYZ";echo "<pre>";print_r($arr);echo "unique*********************<br/>";print_r(super_unique($arr,'titel'));?>