Lists 循环

lists 标签主要用于在模板中循环输出数据集或者多维数组。

普通输出

然后我们在模版中定义如下代码,循环输出名言标题和 IT 名人:

  1. <lists name="list" id="vo">
  2. {$vo.title} {$vo.people}
  3. </lists>

模板编译后的结果:

  1. <?php if (is_array($list)):
  2. $index = 0;
  3. $tmp = $list;
  4. if (count($tmp) == 0):
  5. echo "";
  6. else:
  7. foreach ($tmp as $key => $vo):
  8. ++$index;
  9. $mod = $index % 2; ?>
  10. <?php echo $vo->title; ?> <?php echo $vo->people; ?>
  11. <?php endforeach;
  12. endif;
  13. else:
  14. echo "";
  15. endif; ?>

list 标签的 name 属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id 表示当前的循环变量,可以随意指定,但确保不要和 name 属性冲突。

部分输出

支持输出部分数据,例如输出其中的第 2~4 条记录

  1. <lists name="list" id="vo" offset="2" length='4'>
  2. {$vo.title} {$vo.people}
  3. </lists>

模板编译后的结果:

  1. <?php if (is_array($list)):
  2. $index = 0;
  3. $tmp = array_slice($list, 2, 4);
  4. if (count($tmp) == 0):
  5. echo "";
  6. else:
  7. foreach ($tmp as $key => $vo):
  8. ++$index;
  9. $mod = $index % 2; ?>
  10. <?php echo $vo->title; ?> <?php echo $vo->people; ?>
  11. <?php endforeach;
  12. endif;
  13. else:
  14. echo "";
  15. endif; ?>

输出偶数记录

lists 还支持按偶数输出,例如,我们在模板中写下如下的代码:

  1. <lists name="list" id="vo" mod="2">
  2. <?php if ($mod == 1): ?>
  3. {$vo.title} {$vo.people}
  4. <?php endif; ?>
  5. </lists>

模板编译后的结果:

  1. <?php if (is_array($list)):
  2. $index = 0;
  3. $tmp = $list;
  4. if (count($tmp) == 0):
  5. echo "";
  6. else:
  7. foreach ($tmp as $key => $vo):
  8. ++$index;
  9. $mod = $index % 2; ?>
  10. <?php if ($mod == 1): ?>
  11. <?php echo $vo->title; ?> <?php echo $vo->people; ?>
  12. <?php endif; ?>
  13. <?php endforeach;
  14. endif;
  15. else:
  16. echo "";
  17. endif; ?>

输出奇数记录

lists 还支持奇数记录的输出:

  1. <lists name="arrList" id="arrVo" mod="2">
  2. <?php if ($mod == 0) : ?>
  3. {$arrVo.title} {$arrVo.people}
  4. <?php endif; ?>
  5. </lists>

模板编译后的结果:

  1. <?php if (is_array($list)):
  2. $index = 0;
  3. $tmp = $list;
  4. if (count($tmp) == 0):
  5. echo "";
  6. else:
  7. foreach ($tmp as $key => $vo):
  8. ++$index;
  9. $mod = $index % 2; ?>
  10. <?php if ($mod == 0): ?>
  11. <?php echo $vo->title; ?> <?php echo $vo->people; ?>
  12. <?php endif; ?>
  13. <?php endforeach;
  14. endif;
  15. else:
  16. echo "";
  17. endif; ?>

奇数记录和偶数记录规定如下,我们以数组的 0 为开始,0、2、4为偶记录,其它的都为基数记录。

控制换行

mod 属性还用于控制一定记录的换行,例如:

  1. <lists name="arrList" id="arrVo" mod="2">
  2. {$arrVo.title} {$arrVo.people}
  3. <?php if( $mod == 0 ) : ?>
  4. <br>
  5. <?php endif; ?>
  6. </lists>

模板编译后的结果:

  1. <?php if (is_array($list)):
  2. $index = 0;
  3. $tmp = $list;
  4. if (count($tmp) == 0):
  5. echo "";
  6. else:
  7. foreach ($tmp as $key => $vo):
  8. ++$index;
  9. $mod = $index % 2; ?>
  10. <?php echo $vo->title; ?> <?php echo $vo->people; ?>
  11. <?php if ($mod == 0): ?>
  12. <br>
  13. <?php endif; ?>
  14. <?php endforeach;
  15. endif;
  16. else:
  17. echo "";
  18. endif; ?>

输出循环变量

我们在模版中写下如下的代码:

  1. <lists name="arrList" id="vo" index="k">
  2. {$k} {$vo.people}
  3. </lists>

模板编译后的结果:

  1. <?php if (is_array($list)):
  2. $k = 0;
  3. $tmp = $list;
  4. if (count($tmp) == 0):
  5. echo "";
  6. else:
  7. foreach ($tmp as $key => $vo):
  8. ++$k;
  9. $mod = $k % 2; ?>
  10. <?php echo $k; ?> <?php echo $vo->people; ?>
  11. <?php endforeach;
  12. endif;
  13. else:
  14. echo "";
  15. endif; ?>

输出数组的索引

如果要输出数组的索引,可以直接使用 key 变量,和循环变量不同的是,这个 key 是由数据本身决定,而不是循环控制的,这个 key 可以通过 key 属性指定。

例如:

  1. <lists name="arrList" id="vo">
  2. key: {$key}
  3. </lists>

模板编译后的结果:

  1. <?php if (is_array($list)):
  2. $index = 0;
  3. $tmp = $list;
  4. if (count($tmp) == 0):
  5. echo "";
  6. else:
  7. foreach ($tmp as $key => $vo):
  8. ++$index;
  9. $mod = $index % 2; ?>
  10. key: <?php echo $key; ?>
  11. <?php endforeach;
  12. endif;
  13. else:
  14. echo "";
  15. endif; ?>

大家看到没有,索引从 0 开始,而不是从 1 开始,这个是数组原始索引。