目标:把二维数组
$arr = [
[1,1,4,3,5],
[3,3,2,1,2],
[1,1,2,4,2],
[1,2,1,1,1],
[3,3,2,1,5],
];
按每一列正序排列。
期望结果:
[
[1,1,2,4,2],
[1,1,4,3,5],
[1,2,1,1,1],
[3,3,2,1,2],
[3,3,2,1,5],
];
方法一:
foreach ($arr as $k=>$v){
$str[$k] = '';
foreach ($v as $kk=>$vv){
$str[$k] .= chr($vv);
}
}
$oldStr = $str;
sort($str);
foreach ($str as $k=>$v){
$arrSort = array_search($v,$oldStr);
$arrNew[] = $arr[$arrSort];
}
print_r($arrNew);
方法二:
$num = count($arr);
$heap = new SplMinHeap();//PHP标准库数据结构最小堆
for ($i=0;$i<$num;$i++){
$heap->insert($arr[$i]);
}
for ($i=0; $i<$num;$i++){
$arrNew[] = $heap->extract();
}
print_r($arrNew);