Kir*_*met 62 php arrays function
例如:
$functions = array(
'function1' => function($echo) { echo $echo; }
);
Run Code Online (Sandbox Code Playgroud)
这可能吗?什么是最好的选择?
Ale*_*ett 140
有几个选择.用途create_function:
$functions = array(
'function1' => create_function('$echo', 'echo $echo;')
);
Run Code Online (Sandbox Code Playgroud)
只需将函数的名称存储为字符串(这实际上create_function就是这一切):
function do_echo($echo) {
echo $echo;
}
$functions = array(
'function1' => 'do_echo'
);
Run Code Online (Sandbox Code Playgroud)
如果您使用的是PHP 5.3,则可以使用匿名函数:
$functions = array(
'function1' => function($echo) {
echo $echo;
}
);
Run Code Online (Sandbox Code Playgroud)
所有这些方法都列在callback伪类型下的文档中.无论您选择哪种方式,调用函数的推荐方法都是使用call_user_func或call_user_func_array函数.
call_user_func($functions['function1'], 'Hello world!');
Run Code Online (Sandbox Code Playgroud)
jav*_*web 10
由于PHP"5.3.0匿名函数变得可用",使用示例:
请注意,这比使用旧版要快得多create_function...
//store anonymous function in an array variable e.g. $a["my_func"]
$a = array(
"my_func" => function($param = "no parameter"){
echo "In my function. Parameter: ".$param;
}
);
//check if there is some function or method
if( is_callable( $a["my_func"] ) ) $a["my_func"]();
else echo "is not callable";
// OUTPUTS: "In my function. Parameter: no parameter"
echo "\n<br>"; //new line
if( is_callable( $a["my_func"] ) ) $a["my_func"]("Hi friend!");
else echo "is not callable";
// OUTPUTS: "In my function. Parameter: Hi friend!"
echo "\n<br>"; //new line
if( is_callable( $a["somethingElse"] ) ) $a["somethingElse"]("Something else!");
else echo "is not callable";
// OUTPUTS: "is not callable",(there is no function/method stored in $a["somethingElse"])
Run Code Online (Sandbox Code Playgroud)
参考文献:
要跟进Alex Barrett的帖子,create_function()会返回一个实际可用于调用函数的值,因此:
$function = create_function('$echo', 'echo $echo;' );
$function('hello world');
Run Code Online (Sandbox Code Playgroud)