【问题标题】:breaking output of php array into chunks将php数组的输​​出分成块
【发布时间】:2011-07-08 10:26:04
【问题描述】:

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

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

我想每 10 个图像包装一个 div。其余的也应该得到一个 div 。

我想我需要在 $images 上使用 array_chunk 并将上面的内容包装在每个块的另一个循环中。我开始做的一点点数学如下:

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

提前感谢您的帮助, 赛佩尔

【问题讨论】:

    标签: php arrays


    【解决方案1】:

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

    $chunks = array_chunk($images, 10);
    

    那么你需要一个嵌套的for (foreach) 循环:

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

    【讨论】:

      【解决方案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

      【讨论】:

      • 我喜欢这里的数学方法。谢谢你。模数的有趣用法。
      猜你喜欢
      • 2012-01-19
      • 2017-06-12
      • 2015-03-28
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多