2011-07-08 16 views
1

私は次のようにforeachループでのimg htmlタグの番号を印刷するには使用していますいくつかの画像についての情報を含む配列を持っている:チャンクにPHPの配列の出力を壊す

<?php foreach ($images as $image) : ?> 
<img alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" /> 
<?php endforeach; ?> 

私はしたいと思います10枚の画像ごとにdivをラップします。残りの部分はdivも取得する必要があります。

私はarray_chunk$imagesとする必要があると思っており、上記をそれぞれのチャンクごとに別のループで囲みます。私が始めた数学の少しは次の通りです:

$pics_per_page = 10; 
$imgcount = count($images); 
$num_pages = ceil($imgcount/$pics_per_page); 
$pages = array_chunk($images, $num_pages); 

私はここからどのように進みますか? HTMLを出力するにあたって、$ images配列を正しく使用するにはどうすればよいですか?

array_chunkメソッドについて忘れてしまいましたが、私は次のようにしていますが、array_chunkメソッドはより清潔に見えます。事前にあなたの助けのための

for i from 1 to num_pages: 
echo "<div>" 
j = (i-1) * pics_per_page; 
while j <= i * pics_per_page 
    echo "<img src = "$images[j]->thumbnailURL />"; 
endwhile; 
echo "</div>" 

おかげで、あなたは間違ってarray_chunk[docs]を使用している セファー

答えて

2

。あなただけの各チャンクのサイズを指定する必要があります。あなたはあまりにもarray_chunkせずにそれを使用することができ

<?php foreach($chunks as $chunk): ?> 
    <div class="someClass"> 
    <?php foreach($chunk as $image): ?> 
     <img alt="<?php echo $image->alttext ?>" src="<?php echo $image->thumbnailURL ?>" /> 
    <?php endforeach; ?> 
    </div> 
<?php endforeach; ?> 
+0

はあなたにフェリックスをありがとう!素晴らしい仕事をした。 – Sepehr

2

$chunks = array_chunk($images, 10); 

を次に、(foreachforネストされたループを必要としています。

<?php 
$imgTot = count($images); 

echo '<div>'; 

for($i=0; $i<$imgTot; $i++) 
{ 
    if ($i % 10 == 0) { 
     echo '<div>'; 
    } 

    echo '<img alt="'.$image->alttext.'" src="'.$image->thumbnailURL.'" />'; 

    if ($i % 10 == 9) { 
     echo '</div>'; 
    } 
} 

echo '</div>'; 

?> 

ここで働くの例を参照してください:http://codepad.org/FkdTEH91

+0

私はここでマッシーのアプローチが好きです。ありがとうございました。モジュラスの興味深い使用。 – Sepehr

+0

@Sepehrあなたが気に入って良かったです。また、より良いパフォーマンスを得ました。 –