其他语言大多都有函数传参解包的功能,php8也加入了这个功能。

  • php version < 8
<?php
function test(...$arg) {
    var_dump($arg);
}
test();
//array(0) { }
test(NULL);
//array(1) { [0]=> NULL }
test("foo", "bar");
//array(2) { [0]=> string(3) "foo"  [1]=> string(3) "bar" }
test(NULL, array(), "dummy");
//array(3) { [0]=> NULL [1]=>[] [2]=> string(5) "dummy" }


function test1($a, $b = NULL, $c = NULL, $d = NULL, $e = NULL) {
    var_dump($a, $b, $c, $d, $e);
}
$arg = array(
    "First arg",
    NULL,  NULL,  NULL,
    "Fifth arg",
);
 
test1(...$arguments);

// string(14) "First arg"
// NULL
// NULL
// NULL
// string(14) "Fifth arg"
  • php version >=8
<?php

function dummy($a, $b = NULL, $c = NULL, $d = NULL, $e = NULL) {
    var_dump($a, $b, $c, $d, $e);
}
dummy(a:"dummy", e:"foo");
// string(5) "dummy"
// NULL
// NULL
// NULL
// string(3) "foo"
Last modification:September 9, 2022
如果觉得我的文章对你有用,请随意赞赏