• Lists 循环
    • 普通输出
    • 部分输出
    • 输出偶数记录
    • 输出奇数记录
    • 控制换行
    • 输出循环变量
    • 输出数组的索引

    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 开始,这个是数组原始索引。