-3

たとえば、私は配列を持っています

// In
$arr = [0, 1, 2, 4, 5];
// Out
$cycled_arr = [5, 1, 2, 3, 4, 0];

これは私がしました:

$arr = array(0, 1, 2, 3, 4, 5);

// It cycles once
function array_start_push($array){
    return array_merge( array(array_pop($array)), $array);
}
// This function must cycle array $times times
function cycleArray($times,&$glArr){
    if (!isset($times)){
        $result = $glArr;
    } else {
        for ($loc = 0; $loc <= $times; $loc++) {    
        $result = array_start_push($glArr); 
        $glArr = $result;
    }   
    return $result;
}

$hmm = cycleArray($arr);

echo "<pre>";
var_dump($hmm);
echo "</pre>";

残念ながらページを読み込んでいます。実行には注意してください!

アップデート:

// In array
$arr = array(0, 1, 2, 3, 4, 5);

// Circle array once 
function array_start_push($array){
    return array_merge( array(array_pop($array)), $array);
}
// Cycling $times times
function cycleArray($times,&$glArr){
        for ($loc = 0; $loc <= $times; $loc++) { 
            $result = array_start_push($glArr); 
            $glArr = $result;
        }   
    return $result;
}

$hmm = cycleArray(0,$arr);

echo "<pre>";
var_dump($hmm);
echo "</pre>";

しかし、これはnullがありますが、1回循環します!

4

3 に答える 3

0

この機能を試してください:

function cycleArray($times, $glArr){
  for($i = 0; $i < $times; $i++)
  {
    //$glArr[] = array_shift($glArr);
    array_unshift($glArr, array_pop($glArr));
  }
  return $glArr;
}
于 2012-06-18T08:33:27.330 に答える
0

cycleArray($arr);存在しないため、おそらくエラーが発生します。2 つのパラメーターが必要です。

エラーログを確認してください。

于 2012-06-18T08:18:22.757 に答える
0

あなたが実際にサイクルを意味していると仮定すると、それがあなたの例が示しているものではありません:

function cycle(array $arr, $steps) {
    return array_merge(array_slice($arr, $steps), array_slice($arr, 0, $steps));
}

var_dump(cycle(array(1, 2, 3, 4, 5), 3));

結果:

array(5) {
  [0]=> int(4)
  [1]=> int(5)
  [2]=> int(1)
  [3]=> int(2)
  [4]=> int(3)
}
于 2012-06-18T08:45:06.183 に答える