/*
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
*/