如何在PHP中向匿名函数传递多个参数?

5

PHP 5.3+支持匿名函数(虽然在PHP 7.x+中以绑定方式略有不同)。我正在运行PHP 5.6.x

是否有一种语法可以允许将多个参数传递给作为回调使用的匿名函数(而不仅仅是使用数组)?这些示例中哪些是可能的,在PHP中呢?

示例1

function ($str1, $str2 ){   //But, that would be too easy, right?
    return $str1 . $str2;
}

例子2

function () use ($string, $min, $max) {  // Not seeing this in the manual.
    $length = mb_strlen($string, 'UTF-8');
    return ($length >= $min) && ($length <= $max);
}

示例 3

只是出于好奇,这种表格是否可行?

function ($str1, $str2 ) use ($int1, $int2) { // But, that would be in the manual?
    return $str1 . $str2 .' '. $int2 + $int2;
}

我查看了PHP手册,但没有找到我需要的内容。

1
所有三种形式都是可能的;但标准参数在函数调用时传递;“使用”参数在定义闭包的点传递。 - Mark Baker
1
在 PHP 5.6 中,您还可以使用 ... 运算符进行参数打包/解包:function (...$args){ return implode($args); } - Mark Baker
@MarkBaker,你对use参数的解释应该写在PHP手册里。我现在更好地理解了。谢谢。我学到了JavaScript中的匿名函数和闭包...我不是要做一个完全的类比。我只是想说当你说“闭包定义的地方”时,我理解了。太棒了。 - Anthony Rutledge
@MarkBaker 谢谢。我得查一下参数打包/解包。干杯。 - Anthony Rutledge
关于use:http://ca2.php.net/manual/zh/functions.anonymous.php#example-160 - miken32
显示剩余2条评论
1个回答

0

例子2对我有用。

function () use ($string, $min, $max) {  // Not seeing this in the manual.
    $length = mb_strlen($string, 'UTF-8');
    return ($length >= $min) && ($length <= $max);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接