2012-04-26 99 views
0

我正在使用foreach来循环显示图像。最多有四张图片和最少一张图片。 例如,如果有两个图像(=两个循环),我想告诉foreach他需要再次循环两次并回显一些占位符图片。PHP foreach循环x次并添加占位符

继承人我的foreach:

<?php foreach($users as $k => $v) {?> 
<img src="/images/user_<?php echo $k; ?>.jpg" alt="" title="" /> 
<?php } ?> 

输出(两个回路):

<img src="/images/user_0.jpg" alt="" title="" /> 
<img src="/images/user_1.jpg" alt="" title="" /> 

但新的脚本应该输出:

<img src="/images/user_0.jpg" alt="" title="" /> 
<img src="/images/user_1.jpg" alt="" title="" /> 
<img src="/images/user_placeholder.jpg" alt="" title="" /> 
<img src="/images/user_placeholder.jpg" alt="" title="" /> 

不要忘记它可能是$用户可以有x个条目(0-4)

+0

因此,您希望将x个用户图像输出到浏览器,并且x个占位符(到目前为止都是完全相同的)紧随其后? – Malovich 2012-04-26 14:58:54

回答

4

使用array_fill来根据需要填充尽可能多的项目(因为它们全部相同),然后将其打印出来。

<?php foreach($users as $k => $v) {?> 
<img src="/images/user_<?php echo $k; ?>.jpg" alt="" title="" /> 
<?php } ?> 

<?php 
echo implode('', array_fill(0, count($users), 'placeholder image HTML')); 

当然不是这样的可爱,你也可以使用其他foreach,在每次迭代打印placeholder image HTML中。

更新:原来还有一个更好的方法:

echo str_repeat('placeholder image HTML', count($users)); 

PHP真的有太多许多功能记住。 :)

+0

感谢这个可爱的解决方案:) *接受* ...编辑:都工作。我喜欢单线解决方案,所以我很开心 – ggzone 2012-04-26 15:05:29

0

使用计数器...

<?php 
$counter = 0; 
foreach($users as $k => $v) {?> 
    <img src="/images/user_<?php echo $k; ?>.jpg" alt="" title="" /> 
<?php $counter++; 
} 
while{$counter < 4) 
{?> 
    <img src="/images/user_placeholder.jpg" alt="" title="" /> 
<?php } ?> 
0

这应该工作

$count = 1; 
foreach($users as $k => $v) { 
?> 
    <img src="/images/user_<?php echo $k; ?>.jpg" alt="" title="" /> 
<?php 
    $count++; 
} 

for ($i = $count; $i <= 4; $i++) { 
?> 
    <img src="/images/user_placeholder.jpg" alt="" title="" /> 
<?php 
} 
?> 
0
<?php 
$placeholders = array(); 
foreach($users as $k => $v) {?> 
    <img src="/images/user_<?php echo $k; ?>.jpg" alt="" title="" /> 
    <?php 
    $placeholders[] = '<img src="/images/user_placeholder.jpg" alt="" title="" />'; 
} 
foreach ($placeholders as $placeholder){ 
    echo $placeholder; 
} ?> 

正如你可以看到,有十几个途径皮肤这个特别的猫。