黑马程序员技术交流社区

标题: thinkphp框架中使用foreach和volist应该注意的事项 [打印本页]

作者: 为热爱挥汗    时间: 2018-1-19 09:58
标题: thinkphp框架中使用foreach和volist应该注意的事项
在tp中,如果在同一页面使用tp封装的foreach和volist,有时候会出现莫名其妙的问题,这个问题细究起来,其实都是变量名太随意引起的。请看下面的代码:
赋值代码:
public function foreachs(){
    $this->stu = array(
        array('name'=>'tom','age'=>20,'sex'=>1),
        array('name'=>'jerry','age'=>12,'sex'=>0),
        array('name'=>'mary','age'=>34,'sex'=>1),
        array('name'=>'rose','age'=>23,'sex'=>0),
        array('name'=>'bob','age'=>18,'sex'=>1)
    );
    $this->display('');
}

页面展示代码:
<table width="800" border="1" rules="all" align="center">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
    </tr>
    <foreach name="stu" item="stu" key="k">
        <tr>
            <td>{$k}</td>
            <td>{$stu['name']}</td>
            <td>{$stu['age']}</td>
            <td>{$stu['sex']==0?'男':'女'}</td>
        </tr>
    </foreach>
</table>
<table width="800" border="1" rules="all" align="center">
        <tr>
            <th>编号</th>
            <th>编号</th>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
        </tr>
      
        <volist name="stu" id="stus" key="k">
            <tr>
                <td>{$k}</td>
                <td>{$key}</td>
                <td>{$stus['name']}</td>
                <td>{$stus['age']}</td>
                <td>{$stus['sex']==0?'男':'女'}</td>
            </tr>
        </volist>
</table>
页面显示是不正常的,但是我将这两个table颠倒一下顺序,显示就正常了,怎么回事呢?大家 请注意这行代码 <foreach name="stu" item="stu" key="k">,这里的item="stu",就相当于又声明了一个新的变量stu,下面的volist里面的name=“stu”,这里的stu遍历的就是foreach里面的item=“stu”里面的stu,原本的stu并不是这个!所以foreach中item的取值不应该与下面的volist中的name取值同名!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2