ロジックを抽象化する関数があるのが好きです。したがって、配列、開始位置、および制限を取得する関数を作成することをお勧めします。
<?php
function loop_array($array,$position,$limit) {
//find the starting position...
$key_to_start_with = array_search($position, $array);
$results = array();
//if you couldn't find the position in the array - return null
if ($key_to_start_with === false) {
return null;
} else {
//else set the index to the found key and start looping the array
$index = $key_to_start_with;
for($i = 0; $i<$limit; $i++) {
//if you're at the end, start from the beginning again
if(!isset($array[$index])) {
$index = 0;
}
$results[] = $array[$index];
$index++;
}
}
return $results;
}
これで、次のような任意の値で関数を呼び出すことができます。
$array = array(25, 50, 75, 100);
$position = 75;
$limit = 3;
$results = loop_array($array,$position,$limit);
if($results != null) {
print_r($results);
} else {
echo "The array doesn't contain '{$position}'";
}
出力
Array
(
[0] => 75
[1] => 100
[2] => 25
)
または、他の値でループすることもできます。
$results = loop_array(array(1,2,3,4,5), 4, 5);
実例は次のとおりです:http://codepad.org/lji1D84J