我在创建一个用参数调用父函数的函数时遇到了问题。
这是我的例子:
function firstfunction($param = null){
function secondfunction(){
$query = mysql_query('SELECT * FROM table_name WHERE table_id="' . fristfunciton(1) . '"');
}
}
它返回错误。请帮忙!
答案 0 :(得分:2)
你做不到。函数始终存在于全局范围内,即使在另一个函数内声明也是如此。
答案 1 :(得分:1)
您的代码有2个问题。
你有一个错字。在secondfunction
中,您拨打fristfunciton
,但您的父功能实际上名为firstfunction
。
在调用父函数并且两个函数都具有全局范围时,定义父函数内的子函数。如果多次调用父函数(在您的情况下,从子函数内部),它将尝试定义具有相同名称的新函数。您不能在同一范围内声明具有相同名称的2个函数,因此失败。
有关创建功能的更多信息: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();
}