将你的贴的代码改成:
$f=99;
//改这里;
$r=SetEmptyToZero();
//改这里;
echo $f;其中function SetEmptyToZero()
{
$f=4;
}

解决方案 »

  1.   

    楼主这样写的问题是,程序理解成你写了两个$f,一个是全局的,一个是SetEmptyToZero()函数内部的,其中函数内部的$f已经变成4了,可是全局的那个没有变,还是99,这叫变量的作用域.
    你的问题是缺乏封装,这样编程迟早会遇到大问题,建议你注意封装,封装的最系统办法,就是使用面向对象,你的问题如果用对象来解决,就很可靠了:
    class f
    {
      var $f;//这就是你想用的那个f变量;
      function setf($x){//变量设置函数,修改变量时用
       $this->f=$s;
      }
      function getf(){//变量读取函数
       return $this->f;
      }
    }使用时:
    $f=new f();
    $f.setf(99);//这时f肯定是99
    echo $f.getf();//返回99
    $f.setf(4);//这时f肯定是4
    echo $f.getf();//返回4
    就不必用你那个SetEmptyToZero()函数了.
      

  2.   

    $f=99;
    SetEmptyToZero();
    echo $f;function SetEmptyToZero(){
    global $f;
    $f=4;
    }*************
    $f=99;
    SetEmptyToZero($f);
    echo $f;function SetEmptyToZero(&$f){
    $f=4;
    }
      

  3.   

    你没理解局部变量和全局变量的概念,如果你的程序中
    function SetEmptyToZero()
    {
        global $f;
        $f=4;
    }
    这样就可以赋值了!