我在PHP中有一个包含24个项目的数组,我想创建一个循环,在每个8项后我想显示一个图像。问题是每8个项目后必须按顺序显示3个不同的图像。
我该如何做到这一点?
答案 0 :(得分:3)
只要这样做,array_chunk
通常对此有用:
$items = array(...);
$imgs = array('img1', 'img2', 'img3');
$groups = array_chunk($items, 8);
foreach($groups as $group)
{
foreach($group as $item)
{
# 8 items
}
$image = array_shift($imgs); # your image
}
答案 1 :(得分:2)
尝试这样的事情:
$i=0;
$j=0;
foreach($array as $item)
{
if(($i > 0) && ($i%8 == 0))
{
// Show the image ($j%3)
$j++;
}
$i++;
}
注意:图像编号为:0,1和2
答案 2 :(得分:1)
$array = array();
$imgs = array('img1', 'img2', 'img3');
// fill the array (you don't need this, since you already have the array)
for($i = 0; $i < 24; $i++){
$array[$i] = $i+1;
}
// show the items
foreach($array as $id => $arr){
echo $arr;
if( (($id+1)%8) == 0) echo $imgs[(($id+1)/8)-1];
}
如果你的数组没有数字索引,请使用@hakre的解决方案,因为那个没有考虑数组的数字id。
答案 3 :(得分:0)
Modulo-Operator正是您所寻找的:
<?php
$items = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24);
$images = array(
1 => 'http://placekitten.com/100/100?image=1',
2 => 'http://placekitten.com/100/100?image=2',
3 => 'http://placekitten.com/100/100?image=3'
);
for($i = 0; $i < count($items); $i++) {
echo '$items['.$i.']'."\n";
if($i && $i%8==0) {
echo '<img src="'.$images[$i/8].'" alt="">';
}
}
这将产生以下输出:
$items[0]
$items[1]
$items[2]
$items[3]
$items[4]
$items[5]
$items[6]
$items[7]
$items[8]
<img src="http://placekitten.com/100/100?image=1" alt="">$items[9]
$items[10]
$items[11]
$items[12]
$items[13]
$items[14]
$items[15]
$items[16]
<img src="http://placekitten.com/100/100?image=2" alt="">$items[17]
$items[18]
$items[19]
$items[20]
$items[21]
$items[22]
$items[23]
$items[24]
<img src="http://placekitten.com/100/100?image=3" alt="">