如何在另一个函数内重新声明一个函数?

时间:2012-03-08 06:25:18

标签: php function

我在创建一个用参数调用父函数的函数时遇到了问题。

这是我的例子:

function firstfunction($param = null){

   function secondfunction(){

       $query = mysql_query('SELECT * FROM table_name WHERE table_id="' . fristfunciton(1) . '"');

   }

}

它返回错误。请帮忙!

4 个答案:

答案 0 :(得分:2)

你做不到。函数始终存在于全局范围内,即使在另一个函数内声明也是如此。

答案 1 :(得分:1)

您的代码有2个问题。

  1. 你有一个错字。在secondfunction中,您拨打fristfunciton,但您的父功能实际上名为firstfunction

  2. 在调用父函数并且两个函数都具有全局范围时,定义父函数内的子函数。如果多次调用父函数(在您的情况下,从子函数内部),它将尝试定义具有相同名称的新函数。您不能在同一范围内声明具有相同名称的2个函数,因此失败。

  3. 有关创建功能的更多信息:http://www.php.net/manual/en/functions.user-defined.php

答案 2 :(得分:1)

如果你使用的是php 5.4,你可以试试anonymous function

$first = function($param = null) {
    $second = function() {
        $query = mysql_query('...' . $first(1));
    }
}

答案 3 :(得分:1)

这样可行。

function first($arg = null) {
    if (!function_exists('second')) {
        function second() {
            first();
        }
    }
    second();
}