Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当索引从末尾脱落时,如何在PHP数组中换行?_Php_Arrays_Infinite Loop_Array Key - Fatal编程技术网

当索引从末尾脱落时,如何在PHP数组中换行?

当索引从末尾脱落时,如何在PHP数组中换行?,php,arrays,infinite-loop,array-key,Php,Arrays,Infinite Loop,Array Key,我希望能够使用数字键检索数组的值。问题是,如果键超出了数组长度,我需要它再次在数组中循环 $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_a

我希望能够使用数字键检索数组的值。问题是,如果键超出了数组长度,我需要它再次在数组中循环

$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 />";
我的研究参考资料:

我的职能:

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

该函数可以工作,但我有一个问题:这是获得预期结果的好方法吗?

您太复杂了,除非您确实想要处理数组中的元素,否则您不想迭代它们,因为这太昂贵了。我想你只需要数组中元素数的模,如下所示:-

$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/>";
}

等等。

您的意思是,如果钥匙从阵列的末端脱落,它应该再次缠绕吗?那么,结束加上一就是开始?如果是这样,类似于
$my_array[$key%count($my_array)]
?@billyonecan修复了粘贴的代码而不是数组。数组中的第一个值是“零”@amaster507无需道歉,我只是想确定我没有错过什么。我仍然不明白为什么,如果传递的密钥大于数组长度,它将返回3。你能详细解释一下逻辑吗?@billyonecan举个例子,如果我尝试“echo$my_数组[11];”在正常情况下,它将返回
注意:未定义的偏移量:11 in[…][…]在第20行
时,我希望它返回
six
我试图在FPDF函数中使用它来显示具有可变色阶的文本的颜色,有时可能有一种颜色,有时可能有三种颜色。第一行得到颜色1,第二行得到颜色2,依此类推。@amaster507:请看我上面的评论,或下面的vascowhite的回答。@halfer和@vascowhite,谢谢!我总是试图使事情变得过于复杂。如果你循环结束数组,这会很好,但如果你循环结束数组的开头,这就不行了。我知道OP没有问这个,但其他人可能会感兴趣。
$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