我可以使用 PHP 匿名函数作为参数,而不将该函数分配给变量吗?
Can I use PHP anonymous function as an argument, without assigning the function to a variable?
PHP 是否允许在串联期间使用匿名函数作为参数之一?
如果是这样,正确的语法是什么?
例如,这是我想要开始工作的示例:
$final_text = $some_initial_string . function ($array_of_strings)
{
$out = '';
foreach ($array_of_strings as $this_particular_string)
{
$out .= $this_particular_string;
}
return $out;
};
注意:以下预计适用于 PHP 版本 7.x 但不适用于 PHP 版本 5.6(对于 5.6,首先将匿名函数分配给变量)
/*
* Strings before & after
*/
$table_heading_text = "HEADING";
$table_bottom_text = "BOTTOM";
/*
* Use the function this way
*/
echo $table_heading_text . (function (array $array_of_strings)
{
$out = '';
foreach ($array_of_strings as $this_particular_string)
{
$out .= $this_particular_string;
}
return $out;
})(array(
"hi",
"mom"
)) . $table_bottom_text;
简而言之...
- 函数必须return一些可以转换为文本的值
- 函数定义必须用括号括起来
( ... )
- 不要忘记在函数定义之后有调用参数
示例:
echo "BEFORE" . (function ($x){return $x;})(" - MIDDLE - ") . "AFTER";
echo "BEFORE" . (function (){return " - MIDDLE - ";})() . "AFTER";
此外,使用 implode() 可能更适合这项特定任务。
PHP 是否允许在串联期间使用匿名函数作为参数之一?
如果是这样,正确的语法是什么?
例如,这是我想要开始工作的示例:
$final_text = $some_initial_string . function ($array_of_strings)
{
$out = '';
foreach ($array_of_strings as $this_particular_string)
{
$out .= $this_particular_string;
}
return $out;
};
注意:以下预计适用于 PHP 版本 7.x 但不适用于 PHP 版本 5.6(对于 5.6,首先将匿名函数分配给变量)
/*
* Strings before & after
*/
$table_heading_text = "HEADING";
$table_bottom_text = "BOTTOM";
/*
* Use the function this way
*/
echo $table_heading_text . (function (array $array_of_strings)
{
$out = '';
foreach ($array_of_strings as $this_particular_string)
{
$out .= $this_particular_string;
}
return $out;
})(array(
"hi",
"mom"
)) . $table_bottom_text;
简而言之...
- 函数必须return一些可以转换为文本的值
- 函数定义必须用括号括起来
( ... )
- 不要忘记在函数定义之后有调用参数
示例:
echo "BEFORE" . (function ($x){return $x;})(" - MIDDLE - ") . "AFTER";
echo "BEFORE" . (function (){return " - MIDDLE - ";})() . "AFTER";
此外,使用 implode() 可能更适合这项特定任务。