2013-10-18 40 views
0

我有一个数组:排序阵列从低到高

$pics = array("0"=>"pic-1", "1"=>"pic-2", "2"=>"pic-3", "3"=>"pic-4", "4"=>"pic-5"); 

,我想将它从低到高进行排序,但是从定义的起点即不为0,然后在添加剩余的值最后,也是从低到高。

因此,例如,具有密钥2作为出发点,我想用

$pics = array("2"=>"pic-3", "3"=>"pic-4", "4"=>"pic-5", "0"=>"pic-1", "1"=>"pic-2"); 

结束有人能向我解释,这可怎么办呢?

+1

使用'usort()'来提供自己的排序功能,或者只是某种纯升序排列,然后用拼接操作在砍东西你想要的方式。 –

回答

0

我计算出这一点,请查看:

<?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>"; 
?>