【发布时间】:2014-09-16 03:44:29
【问题描述】:
我有一个像这个例子一样的多维数组
$arr = array (
range(9,4),
range(8,0),
range(2,7),
range(-1,17)
);
显示其内容后,我得到了这个
9 8 7 6 5 4
8 7 6 5 4 3 2 1 0
2 3 4 5 6 7
-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
现在我想要得到的结果是这样的
-1 0 0 1 1 2
2 2 3 3 3 4 4 4 4
5 5 5 5 6 6
6 6 7 7 7 7 8 8 8 9 9 10 11 12 13 14 15 16 17
我定义了一个对数组进行排序并返回我需要的结果的函数,但我想知道是否有一种使用预定义函数或简单快速算法的简单方法来完成它
这是我的功能
function sort_multi($arr)
{
$length = 0;
foreach ($arr as $value)
$length += count($value);
$sorted = false;
while(!$sorted)
{
$x = 0;
$y = 0;
$sorted = true;
while(($x+$y)<($length-1) && isset($arr[$x][$y]))
{
$new_x = isset($arr[$x][$y+1])?$x:($x+1);
$new_y = isset($arr[$x][$y+1])?($y+1):0;
if(($new_x+$new_y)<$length && isset($arr[$new_x][$new_y]))
if($arr[$x][$y] > $arr[$new_x][$new_y])
{
perm($arr[$x][$y], $arr[$new_x][$new_y]);
$sorted=false;
}
$x = $new_x;
$y = $new_y;
}
}
return $arr;
}
perm的定义是
function perm(&$a,&$b)
{
$inter = $a;
$a = $b;
$b = $inter;
}
【问题讨论】:
-
结果应该是二维数组还是一维数组?
-
第一个结果是在对数组进行排序之前,第二个是我想要在排序之后得到的结果......我的函数做得正确,我只需要知道是否有更好的方法做吧
-
那么结果数组应该是2d(二维)还是1d?
-
示例中的两个维度
标签: php arrays algorithm multidimensional-array