How to create a sorted unique array from a matrix in PHP

1 Answer

0 votes
/*
    Create a sorted unique array (arr) from a matrix (arr of arr).
    Steps:
      1. Flatten matrix into arr
      2. Sort arr (sort)
      3. Remove duplicates (array_unique)
*/

function make_sorted_unique_arr(array $mat): array
{
    $rows = count($mat);
    $cols = count($mat[0]);

    // Flatten matrix into arr
    $arr = [];
    foreach ($mat as $slc) {        // slc = slice (row)
        $arr = array_merge($arr, $slc);
    }

    // Sort arr
    sort($arr);

    // Remove duplicates
    $arr = array_unique($arr);

    // Reindex keys
    return array_values($arr);
}

$mat = [
    [5, 1, 17, 3, 8, 2, 1, 9],
    [3, 5, 7, 4, 2, 3, 4, 1],
    [9, 1, 8, 2, 3, 88, 17, 5]
];

$arr = make_sorted_unique_arr($mat);

foreach ($arr as $x) {
    echo $x . " ";
}



/*
run:

1 2 3 4 5 7 8 9 17 88

*/

 



answered 6 days ago by avibootz
...