我用smarty输出二维数组,结果页面多了几个数字。代码如下:
<{section name=topic loop=$topics}>
<p>
<{$topics[topic].name}>
<{section name=sub loop=$topics[topic]}>
<{$topics[topic][sub].sub_name}>
<{/section}>
<hr>
</p>
<{/section}>显示:
默认主类别1 1 � 2 默认子分类1 默认子分类2
默认主类别2 2 � 2 默认分类别1 默认分类别2
默认主类别3 3 � 2
网页源代码(部分):
<p>默认主类别11�2默认子分类1默认子分类21口2、2口2、3口2是多出来的。这是怎么回事呀?我的编码是utf-8的。
我用foreach再写了一个循环。结果多了两个口,数字也多了,唉~~网页源文件如下:
默认主类别1 1 1 � � 2 2 默认子分类1 默认子分类2 默认主类别2 2 2 � � 2 2 默认分类别1 默认分类别2但是我要是只输出一维数组,就不会多这些东西。没办法了,只好求救。help!!!其实这是我测试用的。原来写的得到了一堆乱七八糟的东西,一堆口...
<{section name=topic loop=$topics}>
<p>
<{$topics[topic].name}>
<{section name=sub loop=$topics[topic]}>
<{$topics[topic][sub].sub_name}>
<{/section}>
<hr>
</p>
<{/section}>显示:
默认主类别1 1 � 2 默认子分类1 默认子分类2
默认主类别2 2 � 2 默认分类别1 默认分类别2
默认主类别3 3 � 2
网页源代码(部分):
<p>默认主类别11�2默认子分类1默认子分类21口2、2口2、3口2是多出来的。这是怎么回事呀?我的编码是utf-8的。
我用foreach再写了一个循环。结果多了两个口,数字也多了,唉~~网页源文件如下:
默认主类别1 1 1 � � 2 2 默认子分类1 默认子分类2 默认主类别2 2 2 � � 2 2 默认分类别1 默认分类别2但是我要是只输出一维数组,就不会多这些东西。没办法了,只好求救。help!!!其实这是我测试用的。原来写的得到了一堆乱七八糟的东西,一堆口...
请问“是空格... 换成 "是什么意思?
为什么会多一些无用的代码的?关键是我循环输出有表格的的话就很乱很乱,连中文都没有了...
而且我输出一维数组是正常的。就是二维数组 显示: 默认主类别1 1 � 2 默认子分类1 默认子分类2 多了”1口2“这些。 望赐教呀!
为方便大虾诊断,现贴出数组,希望我能说得清楚点:
Array
(
[0] => Array
(
[0] => 1
[tid] => 1
[1] => 默认主类别1
[name] => 默认主类别1
[2] => 2009-04-17
[time] => 2009-04-17
[3] => Array
(
[0] => 1
[stid] => 1
[1] => 1
[tid] => 1
[2] => 默认子分类1
[sub_name] => 默认子分类1
[3] => 2009-04-17
[time] => 2009-04-17
) [4] => Array
(
[0] => 2
[stid] => 2
[1] => 1
[tid] => 1
[2] => 默认子分类2
[sub_name] => 默认子分类2
[3] => 2009-04-17
[time] => 2009-04-17
) ) [1] => Array
(
[0] => 2
[tid] => 2
[1] => 默认主类别2
[name] => 默认主类别2
[2] => 2009-04-17
[time] => 2009-04-17
[3] => Array
(
[0] => 3
[stid] => 3
[1] => 2
[tid] => 2
[2] => 默认分类别1
[sub_name] => 默认分类别1
[3] => 2009-04-17
[time] => 2009-04-17
) [4] => Array
(
[0] => 4
[stid] => 4
[1] => 2
[tid] => 2
[2] => 默认分类别2
[sub_name] => 默认分类别2
[3] => 2009-04-17
[time] => 2009-04-17
) ) [2] => Array
(
[0] => 3
[tid] => 3
[1] => 默认主类别3
[name] => 默认主类别3
[2] => 2009-04-17
[time] => 2009-04-17
))
先谢谢啦!
具体见我当时的情况
http://topic.csdn.net/u/20081123/15/53e39383-924e-4178-a354-5001ed2d9724.html
$sql="select * from `topics`";
$rs=mysql_query($sql);
while($re=mysql_fetch_array($rs)){
$topics[]=$re;//第一层主分类
}
foreach ($topics as &$topic){
$tid=$topic["tid"];
$sql="SELECT * FROM `sub_topics` WHERE `tid` ={$tid}";
$rs=mysql_query($sql);
while($re=mysql_fetch_array($rs)){
$topic[]=$re;//子分类}
}
$smarty->assign("topics",$topics);
为什么会造成多一些代码的现象?
2 服务器发送 header content-type charset 与数组内编码不一致.
3 模板 meta 部分编码 与数组内编码不一致.
2.数据库字符是utf8,整理时utf8-general-ci
3.header,meta,都设成utf8。
4.也set names ‘utf8’了。
而且,我从数据库里取中文值,用smarty输出一维数组是正常的。所以我认为不是编码问题。
现在关键是:我用php输出数组是正确的(见四楼),即数组没有赋错。用smarty输出就多了内容了。
Array
(
[0] => Array
(
[0] => 1
[tid] => 1
[1] => 默认主类别1
[name] => 默认主类别1
[2] => 2009-04-17
[time] => 2009-04-17
[topic]=>array
([3] => Array
(
[0] => 1
[stid] => 1
[1] => 1
[tid] => 1
[2] => 默认子分类1
[sub_name] => 默认子分类1
[3] => 2009-04-17
[time] => 2009-04-17
) [4] => Array
(
[0] => 2
[stid] => 2
[1] => 1
[tid] => 1
[2] => 默认子分类2
[sub_name] => 默认子分类2
[3] => 2009-04-17
[time] => 2009-04-17
)
)
) [1] => Array
(
[0] => 2
[tid] => 2
[1] => 默认主类别2
[name] => 默认主类别2
[2] => 2009-04-17
[time] => 2009-04-17
[topic]=>
( [3] => Array
(
[0] => 3
[stid] => 3
[1] => 2
[tid] => 2
[2] => 默认分类别1
[sub_name] => 默认分类别1
[3] => 2009-04-17
[time] => 2009-04-17
) [4] => Array
(
[0] => 4
[stid] => 4
[1] => 2
[tid] => 2
[2] => 默认分类别2
[sub_name] => 默认分类别2
[3] => 2009-04-17
[time] => 2009-04-17
)
)
) [2] => Array
(
[0] => 3
[tid] => 3
[1] => 默认主类别3
[name] => 默认主类别3
[2] => 2009-04-17
[time] => 2009-04-17
) )
说说在smarty模板里怎么写的?代码