UserAction.class.php文件
部分代码:
public function register(){
   
    $user = D('User');
    $arr=$user->field('name')->select();
    $this->assign("Name",$arr);
   //print_r($arr);
   $this->display; 
}tpl模板文件部分代码:  <foreach name="Name" item="my">
   {$my.name}
  </foreach>
cache文件夹里的编译文件部分代码:
 <?php if(is_array($)): foreach($ as $key=>$): echo ($my["name"]); endforeach; endif; ?>为什么不能实现循环输出?

解决方案 »

  1.   

    这段代码:$this->display; 
    修改为:$this->display(); 
      

  2.   

    改了以后还是出现同样的问题:主要是编译后的文件:  <?php if(is_array($)): foreach($ as $key=>$): echo ($my["name"]); endforeach; endif; ?>,if(is_array($))里面没有数组,这是怎么回事? 
      

  3.   

    $this->assign("Name",$arr);换个变量名吧。$this->assign("param",$arr);tpl:
      <foreach name="param" item="my">
       {$my.name}
      </foreach>
      

  4.   

    所以不知道什么哪里出了问题,郁闷,,代码也没有什么问题的,可是为什么就是在编译的时候循环标签就是获取不了数组,我也测试了for,结果都是一样的,查看编译结果,开始值和结束值都为0,不知道是什么原因?
      

  5.   

    清空 Runtime 目录后再试你可以跟踪一下 ThinkPHP/Lib/Driver/TagLib/TagLibCx.class.php
    第 129 行(版本不同可能位置也不同)处是处理 foreach 标记的
    他有
     $tag   = $this->parseXmlAttr($attr,'foreach');
    在这里检查 $tag 的值
      

  6.   

    还是一样的结果,thinkPHP我都换了3个版本了,还是一样,哪位大牛帮我解决一下这个问题?
      

  7.   

    要不把你的完整代码贴出来试一下,或者action里面dump($arr);试一下,看看有没有数据。
     $this->display; 少了 $this->display()
      

  8.   

    试了下没问题,不过我好少用foreach标签,都是volist。
      

  9.   

    正在学习thinkphp
      

  10.   

       //print_r($arr);
       $this->display; 1.输出$arr看看
    2.$this->display();确定对应的模板存在
    3.index.php打开debug看看
      

  11.   

    我也遇到同样的问题了,缓存文件中会多出来<?php if(is_array($)):   ,我的原生代码中没有这个的,它是在哪儿产生的