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