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

誰かがこれを行う方法を説明できますか?

4

1 に答える 1

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>";
?>
于 2013-10-18T17:59:01.407 に答える