Search code examples
phparraysmultidimensional-arrayarray-mergearray-unique

How to merge subarray values and generate a 1-dimensional array of unique values?


How to get final unique array result from multiple array?

I have an array like this:

Array
    (
    [0] => Array
        (
            [0] => 8
            [1] => 9
            [2] => 7
        )

    [1] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
            [3] => 33
            [4] => 21
        )

    [2] => Array
        (
            [0] => 11
            [1] => 12
            [2] => 33
            [3] => 21
            [4] => 9
            [5] => 31
        )
  )

Expected result:

Array(
    [0] => 7
    [1] => 8
    [2] => 9
    [3] => 33
    [4] => 21
    [5] => 11
    [6] => 12
    [7] => 31
)

How to do that using php?


Solution

  • In your desired output indexes are same, you never achieve that. because same indexes are over-written by most recent values.

    You can get like below:-

    $final_array = array_unique(call_user_func_array('array_merge', $array)); //convert multi-dimensional array to single dimensional and remove duplicates
    asort($final_array); // sort by value. this is optional
    $final_array = array_values($final_array); // re-index final array and this is optional too
    echo "<pre/>";print_r($final_array); // print final array
    

    Output:- https://eval.in/752750