不,这是不可能的,默认值的右手表达式必须是常量或数组文字,即
function sample($var1, $var2, $var3 = array(1, 2, 3, 4))
{
}
如果你想要这个行为,你可以使用一个闭包:
$arr = array(1, 2, 3, 4);
$sample = function ($var1, $var2, array $var3 = null) use ($arr) {
if (is_null($var3)) {
$var3 = $arr;
}
// your code
}
$sample('a', 'b');
你也可以用一个类来表达:
class Foo
{
private static $arr = array(1, 2, 3, 4);
public static function bar($var1, $var2, array $var3 = null)
{
if (is_null($var3)) {
$var3 = self::$arr;
}
// your code here
}
}
Foo::bar('a', 'b');