2

How can I remove duplicate arrays in a multidimensional array?

This is my original array with [1] and [2] being identical.

$array = Array
(
    [0] => Array
        (
            [0] => Walter
            [1] => White
        )

    [1] => Array
        (
            [0] => Marie
            [1] => Schrader
        )

    [2] => Array
        (
            [0] => Marie
            [1] => Schrader
        )

    [3] => Array
        (
            [0] => Hank
            [1] => Schrader
        )

)

What I like to achieve:

$array_without_duplicates = Array
(
    [0] => Array
        (
            [0] => Walter
            [1] => White
        )

    [1] => Array
        (
            [0] => Marie
            [1] => Schrader
        )

    [2] => Array
        (
            [0] => Hank
            [1] => Schrader
        )

)
user1706680
  • 1,103
  • 3
  • 15
  • 34

4 Answers4

3
$results = array();

foreach ($array as $k => $v) {
  $results[implode($v)] = $v;
}

$results = array_values($results);
print_r($results);

Demo

If you also want to consider keys when checking for equality, replace implode($v) with serialize($v).

FuzzyTree
  • 32,014
  • 3
  • 54
  • 85
-1
$array = array_map("unserialize", array_unique(array_map("serialize", $input)));

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

Community
  • 1
  • 1
-2
$i=0;
foreach($arr as $key=>$val){
    $i++;
    $j=0;
    foreach($arr as $key2=>$val2){
        $j++;
        if($j<=$i){continue;}
        if($val===$val2){
            unset($arr[$key2]);
        }
    }
}
Cpecific
  • 57
  • 3
-2

You can get rid of duplicates using array_unique with SORT_REGULAR

$array = array_unique($array, SORT_REGULAR);
Roshan Pal
  • 7,438
  • 2
  • 12
  • 12