PHP - 通过数组排序并重复[modulo-operator]

时间:2012-08-01 17:31:20

标签: php arrays loops sequence

我需要能够循环一个项目数组并从另一个数组中为它们提供一个值,而我却无法理解它。

我的数组

$myarray = array('a','b','c'); 

假设我有一个foreach循环,我总共循环了6个项目。

如何获得以下输出

item1 = a
item2 = b
item3 = c
item4 = a
item5 = b
item6 = c

我的代码看起来像这样。

$myarray = array('a','b','c'); 
$items = array(0,1,2,3,4,5,6);
foreach ($items as $item) {
   echo $myarray[$item];
}

在线示例。 http://codepad.viper-7.com/V6P238

我当然希望能够循环无数次

3 个答案:

答案 0 :(得分:6)

$myarray = array('a','b','c'); 
$count = count($myarray);
foreach ($array as $index => $value) {
  echo $value . ' = ' . $myarray[$index % $count] . "\n";
}

%modulo-operator。它返回

  

$ a的剩余除以$ b。

意味着什么

0 % 3 = 0
1 % 3 = 1
2 % 3 = 2
3 % 3 = 0
4 % 3 = 1

等等。在我们的例子中,这反映了我们想要检索的数组$myarray的索引。

答案 1 :(得分:1)

如果您想要完成任意数量的循环,可以使用模数运算符循环键:

$loop = //how much you want the loop to go
//...
for ($i = 0, $i < $loop, $i++) {
    $key = $i % count($myarray);
    echo $i, ' = ', $myarray[$key];
}

答案 2 :(得分:1)

我认为你要找的是modulo operator。尝试这样的事情:

for ($i = 1; $i <= $NUMBER_OF_ITEMS; $i++) {
    echo "item$i = ".$myarray[$i % count($myarray)]."\n";
}