2013-10-18 73 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>"; 
?>