我用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!!!其实这是我测试用的。原来写的得到了一堆乱七八糟的东西,一堆口...

解决方案 »

  1.   

    就是用FF打开的吧,用IE打开就没有了!是空格...   换成&nbsp;应该就没有了
      

  2.   

    用ie打开还有呀!
    请问“是空格...  换成&nbsp;"是什么意思?
    为什么会多一些无用的代码的?关键是我循环输出有表格的的话就很乱很乱,连中文都没有了...
      

  3.   

    我是保存为utf-8的,服务器、数据库都用utf-8,meta,header都指定了utf-8,编码还有问题吗?
    而且我输出一维数组是正常的。就是二维数组 显示:   默认主类别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
            ))
    先谢谢啦!
      

  4.   

    帅哥美女们!smarty里发现了斯哥拉,过来看看呀!
      

  5.   

    这种情况在初学时也遇过,问题不在smarty,而在你的数据库处理函数,你是用mysql_fetch_array()处理查询结果的是吧,你在处理前要把返回数组初始化为空;
    具体见我当时的情况
    http://topic.csdn.net/u/20081123/15/53e39383-924e-4178-a354-5001ed2d9724.html
      

  6.   

    我怎么记得SMARTY不支持多维数组啊
      

  7.   

         大作拜读了。我觉得你的问题是因为只用一个变量来储存结果集结果出错的。这个错误真的挺难发现的。但是我的情况好像不是这样。你看我的数组在php输出是正常的,你的是数组出问题了。我的乱码出现只是在smarty模板中输出的时候有问题!!谁能给我答案呀?
      

  8.   

    我用别的简单的二维数组再用smarty循环输出,是中文的。结果没有错误。看来是我构造数组的时候出错了。下面是我构造数组的代码:请各位帮我分析一下。谢谢
    $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);
    为什么会造成多一些代码的现象?
      

  9.   

    但是我的数组用php输出,你们可以看到也是正常的。天哪!我是不知道哪里错了!
      

  10.   

    编码问题.1 smarty 模板编码与 数组内编码不一致.
    2 服务器发送 header content-type charset 与数组内编码不一致.
    3 模板 meta 部分编码 与数组内编码不一致.
      

  11.   

    1.我所有的页面都储存为了utf-8
    2.数据库字符是utf8,整理时utf8-general-ci
    3.header,meta,都设成utf8。
    4.也set names ‘utf8’了。
    而且,我从数据库里取中文值,用smarty输出一维数组是正常的。所以我认为不是编码问题。
    现在关键是:我用php输出数组是正确的(见四楼),即数组没有赋错。用smarty输出就多了内容了。
      

  12.   

    我感觉是你的数组构造的有问题。你使用这个数组再输出一下看看。
    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 
            ) ) 
      

  13.   


    说说在smarty模板里怎么写的?代码