ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

当索引结束时如何在PHP数组中环绕?

2019-08-23 06:29:41  阅读:252  来源: 互联网

标签: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_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

我的研究参考:

> continuously loop through PHP array (or object keys)
> http://php.net/manual/en/class.infiniteiterator.php

我的形成功能:

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

输出继电器: –

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

等等…

标签:php,arrays,infinite-loop,array-key
来源: https://codeday.me/bug/20190823/1695985.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有