PHP:对多维数组进行排序,但保留其子结构

时间:2015-07-10 11:35:44

标签: php arrays sorting multidimensional-array

我有一个具有以下结构的多维数组:

$arr[0][0] = 1.24;
$arr[0][1] = 5.21;
$arr[0][2] = 2.72;
$arr[0][3] = 1.89;
$arr[0][4] = 4.62;

$arr[1][0] = 3.45;
$arr[1][1] = 5.61;
$arr[1][2] = 2.62;
$arr[1][3] = 1.12;
$arr[1][4] = 1.35;

这个数组应该在保持$ arr [0]和$ arr [1]的子顺序的同时进行排序,所以结果如下所示:

$arr[0][0] = 1.24;
$arr[1][0] = 3.45;
$arr[0][1] = 5.21;
$arr[0][2] = 2.72;
$arr[0][3] = 1.89;
$arr[0][4] = 4.62;
$arr[1][2] = 2.62;
$arr[1][3] = 1.12;
$arr[1][4] = 1.35;
$arr[1][1] = 5.61;

我不关心结果保存的形式,但我需要键和值。希望你理解,并能帮助我。

2 个答案:

答案 0 :(得分:0)

如何循环外部数组并对内部进行排序?

foreach ($arr as $id => $data) {
 sort($data);
 $arr[$id] = $data;
}

答案 1 :(得分:0)

                $arr[0][0] = 1.24;
                $arr[0][1] = 5.21;
                $arr[0][2] = 2.72;
                $arr[0][3] = 1.89;
                $arr[0][4] = 4.62;
                $arr[1][0] = 3.45;
                $arr[1][1] = 5.61;
                $arr[1][2] = 2.62;
                $arr[1][3] = 1.12;
                $arr[1][4] = 1.35;
                $size = count($arr);
                $outArr= array();
                foreach($arr[0] as $key =>$value)
                {
                    $resArr = array();
                    for($i = 0 ; $i< $size ; $i++)
                    {
                        $resArr[] = $arr[$i][$key] ;
                    }
                    sort($resArr);
                    $outArr[$key] = $resArr;
                }
                echo "<pre>";

                print_r($outArr);

检查这是否是一个更接近的解决方案。