smarty中第二次循环不显示?

tangguowei 2009-12-02 03:32:21
在php程序中,应用了
$smarty -> assign('area',$arealist);
$arealist是一个数组,
我在smarty中循环输出area的值,
{foreach from=$area item=area}
<a href="{$area.url}">{$area.areaname}</a>
{/foreach}
可以正常显示,由于下面还要在循环输出一次
{foreach from=$area item=area1}
<a href="{$area1.url}">{$area1.areaname}</a>
{/foreach}
这样为什么就显示不出来了呢?
问题出在哪里,怎么解决,急用
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2009-12-02
  • 打赏
  • 举报
回复
谢谢你了jakc,你说的对
江南昆虫 2009-12-02
  • 打赏
  • 举报
回复
要养成良好的编程习惯,数组循环的时候最好不要把key和item设成数组本身名字,你顶楼的两个foreach对换一下是可以的。
江南昆虫 2009-12-02
  • 打赏
  • 举报
回复
楼主还是没明白我说的意思,说你自找麻烦是因为“你item取了一个与from一样的名称”后,你的数组变量的值已经被它的最后一个值给替代了,你下次再去使用的时候就不再是数组了!

$q = array(123,456);
var_dump($q);//整个数组
foreach ($q as $q) {}
var_dump($q);//数组最后一个值
「已注销」 2009-12-02
  • 打赏
  • 举报
回复
to 2#
两个都写成一样也不可以

to 3#
item与from一样也没关系,第一个循环可以读出

我又试了一下,如果在php程序中,把$arealist赋给两个变量就可以了
$smarty -> assign('area',$arealist);
$smarty -> assign('area1',$arealist);
在模板中第一个循环不变
第二个写成这样:
{foreach from=$area1 item=area1}
<a href="{$area1.url}">{$area1.areaname} </a>
{/foreach}
这样就正常显示了,貌似模板中用几次,就得赋几次值
江南昆虫 2009-12-02
  • 打赏
  • 举报
回复
{foreach from=$area item=area} X

你item取了一个与from一样的名称啊!不是自找麻烦吗!
newdomer 2009-12-02
  • 打赏
  • 举报
回复
把两个都写成是一样的试试。
codeyell-com 2009-12-02
  • 打赏
  • 举报
回复
你把两段代码换一下位置。看是不是第二次不显示。
要是的话,是smarty的问题
要不是的话,就是你代码的问题了。

我没用过smarty,不敢妄下结论。不过感觉是你的问题,area1与area的原因。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧