foreach 循环

  1. 控制前端先通过模型把相应的数据列表给筛选出来;
    1. $list = UserModel::all();
    2. $this->assign('list', $list);
    3. return $this->fetch('user');
  2. 在模版端使用对称的标签{foreach}…{/foreach}实现循环;
    1. {foreach $list as $key=>$obj}
    2. {$key}.{$obj.id}.{$obj.username}({$obj.gender})
    3. .{$obj.email}<br>
    4. {/foreach}
  3. 其中$list 是控制前端传递的数据集,$key 是 index 索引,$obj 是数据对象;
    4. 也可以在模版中直接执行模型数据调用,而不需要在控制器设置;
    1. {foreach :model('user')->all() as $key=>$obj}
    2. {$key}.{$obj.id}.{$obj.username}({$obj.gender})
    3. .{$obj.email}<br>
    4. {/foreach}

    volist 循环

  4. volist 也是将查询得到的数据集通过循环的方式进行输出;
    1. {volist name='list' id='obj'}
    2. {$key}.{$obj.id}.{$obj.username}({$obj.gender})
    3. .{$obj.email}<br>
    4. {/volist}
  5. volist 中的 name 属性表示数据总集,id 属性表示当前循环的数据单条集;
    3. volist 也可以直接使用模型对象获取数据集的方式进行循环输出;
    1. {volist name=':model("user")->all()' id='obj'}
    2. {$key}.{$obj.id}.{$obj.username}({$obj.gender}) .{$obj.email}<br>
    3. {/volist}
  6. 使用 offset 属性和 length 属性从第 4 条开始显示 5 条,这里下标从 0 开始;
    1. {volist name='list' id='obj' offset='3' length='5'}
    2. {$key}.{$obj.id}.{$obj.username}({$obj.gender}) .{$obj.email}<br>
    3. {/volist}
  7. 可以使用 eq 标签(下节课比较标签的知识点),来实现奇数或偶数的筛选数据;
    1. {volist name='list' id='obj' mod='2'}
    2. {eq name='mod' value='0'}
    3. {$key}.{$obj.id}.{$obj.username}({$obj.gender}) .{$obj.email}<br>
    4. {/eq}
    5. {/volist}
  8. 通过编译文件可以理解,mod=2 表示索引除以 2 得到的余数是否等于 0 或 1;
    7. 如果余数设置为 0,那么输出的即偶数,如果设置为 1,则输出的是奇数;
    8. 当然,切换到其它数字,也会有更多的排列效果;
    9. 使用 empty 属性,可以当没有任何数据的时候,实现输出指定的提示;
    1. {volist name=':model("user")->where("id", 1000)->all()'
    2. id='obj' empty='没有任何数据'}
    3. {$key}.{$obj.id}.{$obj.username}({$obj.gender}) .{$obj.email}<br>
    4. {/volist}
  9. empty 属性,可以是控制器端传递过来的变量,比如:empty=’$empty’;
    11. 使用 key=’k’,让索引从 1 开始计算,不指定就用{$i},指定后失效;
    1. {volist name='list' id='obj' key='k'}
    2. {$k}.{$key}.{$obj.id}.{$obj.username}({$obj.gender})
    3. .{$obj.email}<br>
    4. {/volist}

    for 循环

  10. for 循环,顾名思义,通过起始和终止值,结合步长实现的循环;
    1. {for start='1' end='100' comparison='<' step='2' name='i'}
    2. {$i}
    3. {/for}