将php数组的输​​出分成块

时间:2011-07-08 10:26:05

标签: php arrays

我有一个包含有关某些图像的信息的数组,我用它来通过foreach循环打印一些img html标记,如下所示:

<?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>"  

感谢您的帮助, Sepehr

2 个答案:

答案 0 :(得分:2)

您错误地使用了array_chunk [docs]。您只需指定每个块的大小:

$chunks = array_chunk($images, 10);

然后你需要一个嵌套的forforeach)循环:

<?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; ?>

答案 1 :(得分:2)

您也可以在没有array_chunk的情况下使用它。

<?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