我需要能够循环一个项目数组并从另一个数组中为它们提供一个值,而我却无法理解它。
我的数组
$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
我当然希望能够循环无数次
答案 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";
}