我有一个数组:
$pics = array("0"=>"pic-1", "1"=>"pic-2", "2"=>"pic-3", "3"=>"pic-4", "4"=>"pic-5");我想从低到高进行排序,但从定义的非0的起点开始,然后在最后添加剩余的值,也是从低到高。
举个例子,以key 2为起点,我想以
$pics = array("2"=>"pic-3", "3"=>"pic-4", "4"=>"pic-5", "0"=>"pic-1", "1"=>"pic-2");谁能给我解释一下如何做到这一点?
发布于 2013-10-19 01:59:01
我算出来了,请检查一下:
<?php
//
// $start: starting position to sort in [0, count($xarr) - 1].
//
function sortArrayFromPosition($xarr, $start)
{
//
if($start < 0)
{
return $xarr;
}
elseif($start >= count($xarr))
{
return $xarr;
}
//
// sort the ending elements:
//
$ends = array_slice($xarr, $start, null, true);
asort($ends);
//
// append beginning elements:
//
$i = 0;
foreach($xarr as $key => $value)
{
if($i > $start)
{
$break;
}
$ends[$key] = $value;
$i++;
}
return $ends;
}
//
// main tests:
//
//$pics = array("0"=>"pic-1", "1"=>"pic-2", "2"=>"pic-3", "3"=>"pic-4", "4"=>"pic-5");
$pics0 = array("0"=>"pic-1", "1"=>"pic-5", "2"=>"pic-3", "3"=>"pic-2", "4"=>"pic-4");
//
$start = 2;
$pics = sortArrayFromPosition($pics0, $start);
//
echo "<pre>";
print_r($pics);
echo "</pre>";
//
$start = 4;
$pics = sortArrayFromPosition($pics0, $start);
//
echo "<pre>";
print_r($pics);
echo "</pre>";
?>https://stackoverflow.com/questions/19454570
复制相似问题