3

数値キーを使用して配列の値を取得できるようにしたい。問題は、キーが配列の長さを超えている場合、配列を再度ループする必要があることです。

$my_array = array('zero','one','two','three','four','five','six','seven');
function loopArrayValues($array,$key){
    //this is what is needed to return
    return 
}
echo "Key 2 is ".loopArrayValues($my_array,2)."<br />";
echo "Key 11 is ".loopArrayValues($my_array,11)."<br />";
echo "Key 150 is ".loopArrayValues($my_array,11)."<br />";

期待される出力:

Key 2 is two
Key 11 is three
Key 150 is three

私の研究の参考文献:

私の形成された関数:

function loopArrayValues($array,$key){
  $infinate = new InfiniteIterator(new ArrayIterator($array));
  foreach( new LimitIterator($infinate,1,$key) as $value){
    $return=$value;
  }
  return $return;
}

関数は機能しますが、質問があります。これは意図した結果を得る良い方法ですか?

4

1 に答える 1

7

配列内の要素を実際に処理したい場合を除き、コストがかかるため反復したくないので、複雑すぎます。次のように、配列内の要素数のモジュラスが必要だと思います:-

$my_array = array('zero', 'one','two','three','four','five','six','seven');

function loopArrayValues(array $array, $position)
{
    return $array[$position % count($array)];
}

for($i = 0; $i <= 100; $i++){
    echo "Position $i is " . loopArrayValues($my_array, $i) . "<br/>";
}

出力:-

Position 0 is zero
Position 1 is one
Position 2 is two
Position 3 is three
Position 4 is four
Position 5 is five
Position 6 is six
Position 7 is seven
Position 8 is zero
Position 9 is one
Position 10 is two
Position 11 is three
Position 12 is four
Position 13 is five

等...

于 2013-05-17T16:46:04.390 に答える