2016-10-02 55 views
0

我有一个使用简单的PHP foreach循环生成的照片库,我想在图库中插入广告作为图像。从foreach循环中获取一个php数组中的一个随机密钥

对广告的阵列看起来像这样:

$links = array(
    'http://a.com' => 'a.jpg', 
    'http://b.com' => 'b.jpg', 
    'http://c.com' => 'c.jpg', 
); 

现在我需要的link + image单对从这个阵列,同时还迭代每x量之后foreach循环中。

所以我也许应该做它在这里:

if($count % 5 == 0){ 
//get random item 
} 
$count++; 

$count = 0;住宿的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中间的链路是一个从我的阵列和一组随机选择的img's是由我的foreach循环产生的。

到目前为止,我只能够把我的整个数组作为链接后每5 img's这不是我所需要的。这个想法是通过照片库“传播出去”。

如果我一直工作太久或者是不可能的,我甚至不能确定...或者我接近它错了吗?

注:我不在乎广告是否重复。

+1

所以你只想要一个,但你不在乎他们是否重复?我不太确定你想要的输出。你能澄清吗? –

回答

-1

编辑:重新读你的问题(再次)后,似乎你已经应该工作的想法。你能显示完整的代码而不是一点点,所以我们可以确定实际出错的地方吗?


注:下面这里的一切是我原来的答复,这可能不是什么OP实际要求。

不完全确定这是否是您要查找的内容,因为问题并不完全清楚。但我有一个猜想,你可以做这样的事情...

$links = shuffle($links); 
if($count % 5 == 0){ 
//get random item 
$output = array_pop($links); 
} 
$count++; 

从本质上讲这是什么做的,它会随机排列的顺序,那么每5个元素(或任何价值你把若语句),将$ output设置为数组最后一个元素的值,并删除数组的最后一个元素,以使其不能再次使用。这样,当下一次碰到if语句并且它的计算结果为true时,您将获取数组的最后一个元素,该元素不能是重复的值。

如果我误解了你正在努力达到的目标,那么请解释清楚,我会很乐意调整我的答案。

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: 
    // ... 
} 
0

使用array_rand选择随机$链接元素每5次迭代:

$count = 0; 
foreach ($images as $image) { 
    if($count % 5 == 0){ 
     $addUrl = array_rand($links); 
     $addImage = $links[$addUrl] 
    } 
    $count++; 
} 
+0

这只得到图像,而不是网址? – ynef

+0

是真的。我刚刚编辑了我的答案。 array_rand返回一个键,关键是你的url,对吧? –

相关问题