6

我玩了一下 php 的 array_map 函数,并考虑将它与命名参数一起使用,因为参数顺序总是让我恼火。(这些功能没有做任何有用的事情。只是需要一些东西来测试。)

到目前为止一切顺利,这是按预期工作的:

$testArray = [
    'a' => [],
    'b' => [1, 2, 3],
];
$result = array_map(array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr);

(即使我需要一些时间来弄清楚数组参数的名称,因为它array1在德国文档中被记录。但这是一些事情,我会在有时间的时候立即研究。)

但是后来我尝试使用更多参数调用该函数。

所以,我的第一次尝试:

array_map(array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr, []);

致命错误:在命名参数之后不能使用位置参数

我了解到我不能在命名参数之后传递位置参数。

然后反过来:

array_map([], array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr);

致命错误:未捕获的错误:命名参数 $callback 覆盖以前的参数

好的。它将第一个参数作为第一个位置参数并且在我覆盖它时感到困惑。

我开始用谷歌搜索。好的,未知的命名参数被传递给可变参数。让我们尝试一下:

array_map(array: $testArray, callback: fn (array $arr) => count($arr) === 0 ? null : $arr, additional: []);

致命错误:未捕获的 ArgumentCountError:array_map() 不接受未知的命名参数

那么……有没有办法做到这一点?我什至访问了关于命名参数的 rfc,但没有找到任何看起来像解决方案的东西。各位大神能不能给个提示啊,怎么做?

4

0 回答 0