How to Remove Duplicate Values from a Multidimensional Array in PHP?


You have a multidimensional array which has duplicate values in it. You want to remove those duplicate values and make the array a unique one.


To remove duplicate entry from a multidimensional array, follow the steps below-

Step 1: Convert the multidimensional array to one-dimensional array
To convert the multidimensional array to a one-dimensional array, first generate byte stream representation of all the elements (including nested arrays) inside the array. serialize() function can generate byte stream representation of a value. To generate byte stream representation of all the elements, call serialize() function inside array_map() function as a callback function. The result will be a one dimensional array no matter how many levels the multidimensional array has.

Step 2: Make the values unique
To make this one dimensional array unique, use array_unique() function.

Step 3: Revert it to the multidimensional array
Though the array is now unique, the values looks like byte stream representation. To revert it back to the multidimensional array, use unserialize() function.


$appointments = array(
                      array(“Monday”, “5:30 PM”),
                      array(“Friday”, “6:00 PM”),
                      array(“Monday”, “5:30 PM”),
                      array(“Tuesday”, “4:15 PM”),
                      array(“Wednesday”, “8:30 PM”),
                      array(“Thursday”, “1:45 PM”)

$one_dimension = array_map(“serialize”, $appointments);
$unique_one_dimension = array_unique($one_dimension);
$unique_multi_dimension = array_map(“unserialize”, $unique_one_dimension);


[wpdm_file id=48] Output:

    [0] => Array
            [0] => Monday
            [1] => 5:30 PM
    [1] => Array
            [0] => Friday
            [1] => 6:00 PM
    [3] => Array
            [0] => Tuesday
            [1] => 4:15 PM
    [4] => Array
            [0] => Wednesday
            [1] => 8:30 PM
    [5] => Array
            [0] => Thursday
            [1] => 1:45 PM

How it works:

Line 3 $appointments is a multidimensional array. Inside it, the first and the third arrays are identical. We’ll remove the third one.
Line 12 array_map() function applies the serialize() function(which is the call back function) to all the elements of the $appointments array. As a result, byte stream representations of all the elements are generated and those are stored in the $one_dimensional array. Here, $one_dimensional is a one dimensional array.
Line 13 array_unique() function removes the duplicate elements from the $one_dimensional array  and makes it unique and store it in $unique_one_dimension array.
Line 14 array_map() function applies the unserialize() function to all the elements of the $unique_one_dimension array. As a result, byte stream representations of all the array elements are converted to the multidimensional array and it is stored in $unique_multi_dimension array.
Line 16 The line prints the unique multidimensional array.

The code (shorter version)
We can write the above code in short as follows-

$appointments = array(
                     array("Monday", "5:30 PM"),
                     array("Friday", "6:00 PM"),
                     array("Monday", "5:30 PM"),
                     array("Tuesday", "4:15 PM"),
                     array("Wednesday", "8:30 PM"),
                     array("Thursday", "1:45 PM")

$unique_multi_dimension = array_map("unserialize", array_unique(array_map("serialize", $appointments)));


[wpdm_file id=49]

Same as above.