2013-05-30 51 views
0

我有一个工作的PHP脚本,我需要soem帮助修改。如何将if语句添加到for循环?

这里是我的脚本:

<? $images = $product->images; 
for ($i = 4; $i <= 8; $i++): ?> 
<li> 
<a href='<?= $images[$i]->getThumbnailPath(0,0) ?>' class="swatch_lbox_gallery" rel="gal"> 
<img src="<?= $images[$i]->getThumbnailPath(138, 0) ?>"/> 
</a> 
<p><?= $images[$i]->title ?><br/> 
<?= $images[$i]->description ?></p> 
</li> 
<? endfor; ?> 

它当有4+图像的工作,否则我得到一个错误。我试图添加一个if语句,所以它隐藏了如果没有第四个图像,但我不能让它工作。 任何帮助将不胜感激。请让我知道是否需要添加更多细节。

添加的细节 - 我开始在4,因为我需要的图像4-8

谢谢!

斯蒂芬

+0

你得到了什么错误??你为什么要初始化$ i = 4的值在循环中? –

+0

你用'$ i = 0; $ i <= 8; $ i ++'为什么你用'$ i = 4'循环开始# – sAnS

+0

关于Barmar's'的回答,如果你的文件夹中只有4张图片,那么你的'$ i = 4;'在技术上是行不通的。你有没有测试只有4张图片?逻辑上,'4'实际上意味着'5'。 ;-) –

回答

2
if (count($images) >= 4) for ($i = 4; $i <= 8; $i++): 
1

尝试这种情况:

<? 
    $images = $product->images; 
    $startOnImage = 4; 
    $endOnImage = 8; 

    foreach($images as $key => $image) 
    { 
     if($key<$startOnImage){ continue; } 
     if($key>$endOnImage){ break; } 

     echo '<li>'; 
     echo '<a href="' . $image->getThumbnailPath(0,0) . '" class="swatch_lbox_gallery" rel="gal">'; 
     echo '<img src="' . $image->getThumbnailPath(138, 0) . '"/>'; 
     echo '</a>'; 

     echo '<p>' . $image->title . '<br/>'; 
     echo $image->description . '</p>'; 
     echo '</li>'; 

    } 
+1

更好的编辑:)! +1 Infact - 更改'$ image [$ key]',应该是'$ image-> title'或'$ images [$ key]' – Farkie

+0

@Farkie +1,谢谢指出!我的错误应该看到它! –

+0

这将显示所有图像。看起来他想在#4开始。 – Barmar

0
for ($i = 4; $i <= min(8, count($images)-1); $i++) : 

-1是必要的,因为数字数组索引从0开始,而不是1。所以$images[4]要求count($images)是至少5。

+0

大家好,非常感谢您的帮助! 从技术上讲,伽马格和菲尔克罗斯的建议都有效,所以两者都是正确的。 我将首先使用Gamag's,并在客户批准之前选择“正确”的答案。 我希望能为你效劳,非常感谢你! – StephanieF

+0

@Stephanie'Barmar'在数组数组索引thingy上有一个点。 Gawd,我已经忘记了。看看'年龄'是什么?提示:不要“老”。 –