我可以使用PHP匿名函数作为参数,而无需将函数赋值给变量吗?

时间:2017-07-14 15:21:40

标签: php anonymous-function php-5.6 php-7.1

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;
};

1 个答案:

答案 0 :(得分:1)

注意:以下内容适用于PHP V7.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;

简而言之......

  1. 函数必须返回一些可以转换为文本的值
  2. 函数定义必须括在括号( ... )
  3. 不要忘记在函数定义
  4. 之后调用参数

    示例:

    echo "BEFORE" . (function ($x){return $x;})(" - MIDDLE - ") . "AFTER";
    echo "BEFORE" . (function (){return " - MIDDLE - ";})() . "AFTER";
    

    此外,使用implode()可能更适合此特定任务。