我有一个使用简单的PHP foreach
循环生成的照片库,我想在图库中插入广告作为图片。
广告数组如下所示:
$links = array(
'http://a.com' => 'a.jpg',
'http://b.com' => 'b.jpg',
'http://c.com' => 'c.jpg',
);
现在我需要在每x次迭代后仍然在foreach循环内部从此数组中获取单对 link + image
。
所以我应该在这里做这件事:
if($count % 5 == 0){
//get random item
}
$count++;
$count = 0;
位于foreach
循环之外的地方。
我还没想办法在foreach
循环内从我的链接数组中随机选取只有一个项。
基本上最终结果应该是:
<img src="path"></img>
<img src="path"></img>
<img src="path"></img>
<img src="path"></img>
<img src="path"></img>
<a href="link">
<img src="picture"></img>
</a>
<img src="path"></img>
<img src="path"></img>
<img src="path"></img>
<img src="path"></img>
<img src="path"></img>
<a href="link">
<img src="picture"></img>
</a>
等
一组img's
中的链接是从我的数组中随机选择的那个<{1}}由{{1}生成的img's
像正常一样循环。
到目前为止,我只能在每5 foreach
之后将整个数组作为链接,这不是我需要的。我们的想法是&#34;展开&#34;通过照片库。
如果我已经工作太久或者不可能,我甚至不确定......或者我接近错了?
注意:我不在乎广告是否重复。
答案 0 :(得分:0)
在开始循环之前,请对广告进行随机播放,确保您不会破坏密钥:
$keys = array_keys($links);
shuffle($keys);
foreach($keys as $key) {
$links_shuffled[$key] = $links[$key];
}
然后在循环中你有:
if($count % 5 == 0){
//get random item
$item = $links_shuffled[($count / 5) % count($links)];
// output link:
// ...
}
答案 1 :(得分:0)
使用array_rand每隔5次迭代选择一个随机$ link元素:
$count = 0;
foreach ($images as $image) {
if($count % 5 == 0){
$addUrl = array_rand($links);
$addImage = $links[$addUrl]
}
$count++;
}
答案 2 :(得分:-1)
编辑:重新阅读您的问题(再次)后,您的想法似乎应该有效。你能展示你的完整代码而不仅仅是它的一小部分,那么我们可以确定实际出现的问题吗?
注意:这里的所有内容都是我的原始答案,这可能不是OP实际要求的内容。
不完全确定这是否是您正在寻找的,因为问题并不完全清楚。但我有猜测,你可以这样做......
$links = shuffle($links);
if($count % 5 == 0){
//get random item
$output = array_pop($links);
}
$count++;
基本上这是做什么的,它将随机化数组的顺序,然后每5个元素(或你在if语句中放置的任何值),将$ output设置为数组的最后一个元素的值,并删除数组的最后一个元素,因此无法再次使用。这样,当你下一次命中if语句并且它的计算结果为true时,你将获取数组的最后一个元素,它不能是重复的值。
如果我误解了你想要实现的目标,那么请解释清楚,我会愉快地相应地调整我的答案。