2011-06-03 51 views
0
<div id="prettyphoto" align="left"> <a href="http://images.idealer1.com/getimage/999/<?php echo $image['vpid'] ?>.jpg" rel="prettyPhoto[gallery2]"><img src="http://images.idealer1.com/getimage/700/<?php echo $image['vpid'] ?>.jpg" width="100" alt="" /></a> 
    <ul class="gallery clearfix"> 
    <?php foreach ($images as $image) { ?> 
    <li><a href="http://images.idealer1.com/getimage/999/<?php echo $image['vpid'] ?>.jpg" rel="prettyPhoto[gallery2]"><img src="http://images.idealer1.com/getimage/100/<?php echo $image['vpid'] ?>.jpg" width="100" alt="" /></a></li> 
    <? } ?> 
    </ul> 
</div> 

我試圖採取縮略圖的這個foreach循環,並排除第一圖像並將其加載爲一個較大的圖像,我似乎無法弄清楚做到這一點的正確方法。PHP的while循環排除第一陣列的

回答

4

你可以使用array_shift()

<?php $firstImage = array_shift($images); ?> 
<!-- do something with $firstImage --> 
<?php foreach ($images as $image): ?> 
    ... 
<?php endforeach; ?> 

,或者如果你不需要參照第一圖像,array_slice()

<?php foreach(array_slice($images, 1) as $image): ?> 
    ... 
<?php endforeach; ?> 

還要注意使用alternative syntax for control structures的這使閱讀PHP和HTML的混合物更容易一點(但與您的問題無關)。

+1

當我們解釋投票時,我總是很高興...... – 2011-06-03 16:26:11

0

你可以使用一些想法來源於此:

foreach($array as $key=>$value) 
{ 
    if($key==0) 
    echo "code for the large image"; 
    else 
    echo "code for the thumbnail image"; 
} 
1

您可以在陣列 「手動」 迭代,用下一個(),電流(),等:

<?php 
$images = array(
    array('vpid' => 1,), 
    array('vpid' => 2,), 
    array('vpid' => 3,), 
    array('vpid' => 4,), 
); 

$image = current($images); 
?> 
<div id="prettyphoto" align="left"> <a href="http://images.idealer1.com/getimage/999/<?php echo $image['vpid'] ?>.jpg" rel="prettyPhoto[gallery2]"><img src="http://images.idealer1.com/getimage/700/<?php echo $image['vpid'] ?>.jpg" width="100" alt="" /></a> 
    <ul class="gallery clearfix"> 
    <?php 
    next($images); 
    while(list($idx, $image) = each($images)) { ?> 
    <li><a href="http://images.idealer1.com/getimage/999/<?php echo $image['vpid'] ?>.jpg" rel="prettyPhoto[gallery2]"><img src="http://images.idealer1.com/getimage/100/<?php echo $image['vpid'] ?>.jpg" width="100" alt="" /></a></li> 
    <? } ?> 
    </ul> 
</div> 

閱讀:http://www.php.net/manual/en/function.each.php

使用array_shift()可以「鬆動」第一個圖像(完成後必須重新放入)。

用array_slice()你會重複數據,這是一般的不好的做法。