A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在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取值同名!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马