如何使用foreach循环填充占位符框?

时间:2010-11-27 23:40:02

标签: php foreach

使用PHP(如果需要,jquery):

我有30个盒子的这个页面。它永远不会更多或更少。

在这30个盒子上,其中一些将填充“特定于盒子”的数据。

我该怎么说:

如果foreach上有20条记录,那么,20个盒子将包含数据,其余的将保留在占位符中。 如果foreach上有10条记录,那么将有20个盒子留在那个地方。

如何才能实现这样的目标? 这样做可以为我提供一个很好的例子吗?

非常感谢, MEM

4 个答案:

答案 0 :(得分:1)

使用您拥有的数据位填充数组,添加30个占位符,获取数组的前30个元素,然后迭代这些元素。

答案 1 :(得分:1)

你有每个盒子的名字吗?假设你的10或20条记录中有一些名称/ id,我假设它们在数组中......

function OutputBoxes($records, $boxes){
      foreach($boxes as $box){
              $box->PopulateWithPlaceHolder();
      }

      foreach($records as $record){
              $box = GetMatchingBox($record);
              $box->SetValue($record['valueProperty']);
      }

      foreach($boxes as $box){
              echo $box->ElementHtml();
      }

}

假设您有某种类型的box对象知道如何将自己输出为HTML,并设置您希望从记录中得到的任何值。

答案 2 :(得分:1)

制作包含所有数据的数组。然后运行for循环(0..30)来构建你的盒子。对于循环中的每个项目,如果您的box-data数组包含一个元素,则输出特定数据,否则输出占位符数据。像这样......

<?php
  $box_data = array(
     "data for box 1", 
     "data for box 2", 
     "data for box 3"
  );
  for( $i=0; $i<30; ++$i ) {
     if( $i >= count($box_data) ) {
        // output "placeholder box"
        echo "<div class=\"box placeholder\">Placeholder Box</div>";
     } else {
        // output the box's specific data
        echo "<div class=\"box non-placeholder\">{$box_data[$i]}</div>";
     }
  }

答案 3 :(得分:1)

假设$data是数据的数字键控数组:

<?php for($i = 0; $i < 30; $i++): ?>

  <?php if(isset($data[$i]): ?>
    <!-- the html for a box WITH data -->
  <?php else: ?>
    <!-- html for an empty placeholder box -->
  <?php endif; ?>

<?php endfor;?>