在函数PHP中调用函数

时间:2011-06-25 16:57:49

标签: php

1    function foo($i){
2       return bar($i)*4;
3       function bar($i){
4           return $i*4;
5           }
6       }
7    echo foo(4);

返回

Fatal error: Call to undefined function bar() in /var/www/index.php on line 2

为什么不起作用?它在javascript中运行良好,而当我这样做时它可以工作:

function foo($i){
   return bar($i)*4;
   }

function bar($i){
   return $i*4;
   }

5 个答案:

答案 0 :(得分:18)

将函数定义在返回值之上,否则永远不会执行。

<?php
function foo($i){
    function bar($i){
        return $i*4;
    }
    return bar($i)*4;
}
echo foo(4);
?>

答案 1 :(得分:3)

它不起作用,因为您在创建之前调用bar()。 请参阅此处的示例2: - http://www.php.net/manual/en/functions.user-defined.php

答案 2 :(得分:1)

您的代码永远不会到达function bar(...),因此它永远不会被定义。

您需要将bar()功能放在foo()之前或return bar之前。 (根据你的第一个例子回答)。

使用您的第二个示例,您可能在使用bar()之前定义foo(),因此bar()已定义,并且工作正常。

因此,只要你在代码中的某个位置定义了函数,它就可以正常工作,无论是否在另一个函数中调用它。

答案 3 :(得分:1)

如果在另一个函数中定义函数,则可以直接访问它,但在调用父函数之后。 例如:

function a () {
    function b() {
    echo "I am b.";
   }
echo "I am a.<br/>";
}
//b(); Fatal error: Call to undefined function b() in E:\..\func.php on line 8
a(); // Print I am a.
b(); // Print I am b.

答案 4 :(得分:0)

执行不在return语句后执行

像这样更改您的代码

 function foo($i){
 function bar($i){
  return $i*4;
 }
 return bar($i)*4;     
}
echo foo(4);