下面的函数<?
    function first($QQ)
    {
     function second($jk)
     {
      $jk=$jk*$jk;
      return $jk;
     }
     return 100*second($QQ);
    }
    $num=2;
    echo (first($num))."<br>";
    $num=3;
    echo (second($num));
    ?>
的执行结果是:
400
9
但是,当注释掉
$num=2;
echo (first($num))."<br>";两行,即
  <?
    function first($QQ)
    {
     function second($jk)
     {
      $jk=$jk*$jk;
      return $jk;
     }
     return 100*second($QQ);
    }
    //$num=2;
    //echo (first($num))."<br>";
    $num=3;
    echo (second($num));
    ?>
后执行,则会提示Fatal error: Call to undefined function second() in - on line 20 
大侠们能不能解释下php函数嵌套的机理,执行过程等等,本例中注释的两句对后面产生了什么影响?以至于为什么会出现这种情况?本人不理解,求指点。

解决方案 »

  1.   

    你的函数 second 在 函数 first 中定义,只用当函数 first 执行后,函数 second 才可用
      

  2.   

    3楼说的正确,不能直接调用second,必须执行过first后,second才会被定义。
      

  3.   

    作用域哦,就像在function里面定义变量一个样
      

  4.   

    function a(){
    function b(){
    echo 'function b';
    }
    }
    b();//Fatal error: Call to undefined function b() in D:\mydir\test.php on line 36
    function a(){
    function b(){
    echo 'function b';
    }
    b();
    }
    a();
      

  5.   

    function a(){
    function b(){
    echo 'function b';
    }
    }
    a();
    b();//function b但
    a();
    b();
    a();//Fatal error:  Cannot redeclare b() (previously declared