有关smarty的循环输出数组的问题[已解决]
发布于:2022-01-17 09:50:54
#1 prince
查询结果dump出来如下:
Array
(
[0] => Array
(
[cp_id] => 40
[accouts] => 10000
[cp_name] => 豆瓣鲫鱼
[cp_yongl] => 肉片 豆腐卷
[cp_tiaol] =>
[cp_jiag] => 120
[cp_zhek] => 8.8
[cp_huiyuanjia] => 105
[cp_jies] =>

[check_yes] => 0
[crDate] => 2010-08-25 14:15:14
[modDate] => 2010-08-26 22:07:00
[at_date] => 2010-11-24 20:15:14
[delete_is] => 0
[cplist_album] => Array
(
[0] => Array
(
[pic_id] => 1
[cp_id] => 40
[picture] => no.jpg
)
[1] => Array
(
[pic_id] => 2
[cp_id] => 40
[picture] =>no.jpg
)
[2] => Array
(
[pic_id] => 5
[cp_id] => 40
[picture] => no.jpg
)
)
)
模板部分如何用取得[picture]的值并用section输出?(不明白如何取得多维数组的键值)
2010-08-28 17:42:16
#2 azwl
<{foreach from=$arry item=item1}>
<{foreach from=$item1 item=item2}>
<{foreach from=$item2 item=item3}>
<{/foreach}
<{/foreach}
<{/foreach}
看了smraty编译模板后的文件,section 比foreach 复杂的多,所以能用foreach 尽量用foreach
2010-08-28 19:01:31
#3 prince
回复 2 azwl 不能用foreach了,因为上面还有一层foreach呢,如果嵌套foreach的话会输出空白页面的。
2010-08-28 19:19:51
#4 jake
不能用foreach了,因为上面还有一层foreach呢,如果嵌套foreach的话会输出空白页面的。 ...
prince 发表于 2010-8-28 19:19 
foreach嵌套多少层都是可以的,空白页面就是smarty的语法出错。看看foreach的闭合其他的地方有无错误。
按照你的数据来看,显示的方式大致如下:
<{foreach from=$results item=oneresult}>
名称是:<{$oneresult.cp_name}>
相册:
<{foreach from=$oneresult.cplist_album item=onealbum}>
<{$onealbum.piture}>
<{/foreach}>
<{/foreach}>
PS:还是老规则,先用上面代码作为模板试试,然后再加入自己的代码。
2010-08-28 19:29:25
#5 prince
回复 4 jake 再看了下smarty手册里的,确实可以嵌套,但前提是:foreach 可以嵌套,但必须保证嵌套中的 foreach 名称唯一.
之前我的foreach名称应该是重复了,所以输出空白页面。
我把模板里的嵌套按您说的改为:
<{foreach from=$results item=id}>
<{$id.cp_id}> |
<{$id.cp_name}> |
<{foreach from=$oneresult.cplist_album item=$onealbum}> - <{$onealbum.picture}>
<{/foreach}> |
<{$id.crDate}> |
<{$id.at_date}> |
<{$id.modDate}> |
修改 删除 |
<{/foreach}>
运行后有提示出错:Parse error: syntax error, unexpected T_ENDFOREACH in E:\special\www\speedphp\client\tmp\%%DF^DFA^DFA37647%%cpinGL.html.php on line 67
看了下编译生成的文件的67行是第二个foreach的结束符,它的前面没有对应的foreach开始标记,但检查模板里的foreach开始结束都对得上的,不知何故?
2010-08-28 20:51:44
#6 azwl
看看中间那个循环变量!!!
按你的写法要么
第一句应为:<{foreach from=$result item=oneresult}>
要么中间循环为<{foreach from=$id.cplist_album item=onealbum}>
2010-08-28 23:21:51
#7 jake
回复 jake
再看了下smarty手册里的,确实可以嵌套,但前提是:foreach 可以嵌套,但必须保证嵌套中 ...
prince 发表于 2010-8-28 20:51 
我的错,写错了item这个,很多时候这个地方都容易出错的。
<{foreach from=$oneresult.cplist_album item=$onealbum}>
应该是
<{foreach from=$oneresult.cplist_album item=onealbum}>
2010-08-29 10:09:59
#8 prince
谢谢楼上二位的帮助,但这样都无法获取到picture键的值,搜了下有关smarty输出四维数组的文章参照,还是解决不了
2010-08-29 17:01:45
#9 prince
摸了好久,终于弄清楚了!控制器和模板都要做一下修改
控制器做如下修改:
$this -> results = $cpList -> spLinker() -> spPager($this -> spArgs('page', 1), 10) -> findAll($conditions);//按条件查找所有符合条件的记录,这行也需要用一个"spLinker()"的,否则对应表的数据不包含在$results里,这点我还不太明白,请大家指点!
$this-> pager = $cpList -> spPager() -> getPager();//分页,这里这个spLinker()还有没有必要留着?因为数据不够多所以看不到效果,请指点迷津
$this -> display("cpinGL.html");
最终模板如下:
<{foreach from=$results item=id}>
<{$id.cp_id}> |
<{$id.cp_name}> |
<{foreach from=$id.cplist_album item=one}> - <{$one.picture}>
<{/foreach}>
|
<{$id.crDate}> |
<{$id.at_date}> |
<{$id.modDate}> |
修改 删除 |
<{/foreach}>
关键是foreach能这样用:from=$id.cplist_album,所以真的很方便.
另外,我可能表达得不好,请勿见怪!
2010-08-29 17:38:36
#10 xpp1000
dump出来结果
Array
(
[0] => Array
(
[id] => 1
[user] => 3423
[tile] => 32432
[cont] => 23423
[fg] => 324234
)
[1] => Array
(
[id] => 2
[user] => 3423
[tile] => 32432
[cont] => 23423
[fg] => 324234
)
[2] => Array
(
[id] => 3
[user] => 3423
[tile] => 32432
[cont] => 23423
[fg] => 324234
)
)
标题 |
内容 |
发言人 |
管理 |
<{foreach from=$aa item=one}>
<{ $one.tile }> |
<{ $one.cont }> |
<{ $one.user }> |
删除 更新 |
<{/foreach }>
不显示,是什么原因,function show()
{
$liuyan=spClass("liuyan");
$sql="select * from liuyan";
$this->$aa=$liuyan->findsql($sql);
dump($this->$aa);
//$this->$results=$sp->findAll();
$this->display("default/index.html");
}
2010-09-05 22:06:38
#11 xpp1000
字段名没有错误的
2010-09-05 22:07:29
#12 jake
字段名没有错误的
xpp1000 发表于 2010-9-5 22:07 
$this->$aa=$liuyan->findsql($sql);
改回正确的
$this->aa=$liuyan->findsql($sql);
2010-09-06 09:35:14
#13 prince
回复 12 jake 对呀,$this->后的变量是不能带$的,看看$this->display("index.html");就是这么回事了
2010-09-06 10:29:17
#14 xpp1000
谢谢,问题解决了,有一个新问题来了,我在开发过程碰到这样一个问题,不知道如何解决,就是有很多注册用户(学生家长),还有管理员以及园长,他们的用户认证问题,以及给他们每个注册用户开一个二级域名。
2010-09-14 19:59:00