$a="1";
function aa(){
  global $a;
  $a="2";
}这样可以改变$a的值...

解决方案 »

  1.   

    global是声明全局变量,去掉global试试
      

  2.   

    为什么我的改变不了?

    $a="1";
    function aa(){
    global $a;
    $a="2";
    }
    $Smarty->assign("getA",$a);
    ==================
    我这样在模板里输出{$getA}还是1
      

  3.   

    $Smarty->register_function("getAA","aa");
    $Smarty->assign("getA",$a);
    ===========
    前面还有一个注册运行函数aa的
      

  4.   

    $a="1";
    function aa(){
    global $a;
    echo $a."<br>";
    $a="2";
    echo $a."<br>";
    }
    $Smarty->register_function("getAA","aa");
    $Smarty->assign("getA",$a);
    =========
    模板:{getAA}{$getA}
    =====
    显示:
    1
    2
    1
    前面1和2是{getAA}的输出,最后的1是{$getA}的输出
      

  5.   

    不对,这样确实是要用用global声明,要不然真的改不了值了,
      

  6.   

    我不在Smarty里测试直接调用aa函数是可以改变的,用在Smarty里就改变不了了,是Smarty本身的问题。