php - 如何让 PHP 理解 * 数组或函数参数的 splat 运算符(3 点 ...)?

标签 php function splat

我有这个代码:

function test(...$strings)
{
    // ...
}

它允许我像这样调用 test():

test('a', 'series of', 'strings go here');

哪个有效。但是,我经常想这样做:

test([ 'a', 'series of', 'strings go here' ]);

或者:

test($an_array_of_strings);

事实上,当我开始收到有关“数组到字符串转换”的错误时,我非常确定这会起作用,以至于我感到震惊和困惑。

我的意思是,“...”语法是一种特殊的语言构造,专门用于将函数的可变数量的参数转换为数组!我什至不明白为什么它不会自动理解这种非常常见/有用的做法。

因为它(显然)没有,是否有某种方法可以在不必使用两个单独的函数的情况下完成此操作?我不想要一个单独的:

function test_array($strings = [])
{
    // ...
}

最佳答案

反之亦然:

test(...$an_array_of_strings);

如果你想让它自动(这样你就不必使用 ... 将数组拼写到参数上),你需要手动测试 $ strings 只有一个元素,是一个数组;如果是这样,那么你在函数内部手动取消它。这使您失去了将单个数组作为单个参数传递的能力,我不推荐这样做。 IE。目前你可以区分

test([1, 2]); // one argument that is an array
test(1, 2);   // two arguments that are strings

有了这样的启发式方法,您将无法再这样做了。

关于php - 如何让 PHP 理解 * 数组或函数参数的 splat 运算符(3 点 ...)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56520494/

相关文章:

php - 如何记录/查明哪个 PHP 脚本使用了大量内存?优化问题

php - Laravel 处理异常

matlab - 如何将作者身份和版本信息包含到您的 MATLAB 函数中

ruby - Splat 在哈希上

Powershell splat 销毁变量

javascript - 其他 JavaScript 文件中 ob_start php 中定义的 PhpStorm JavaScript 方法

php - 联系表单 - 用户姓名和电子邮件地址为 'unknown'

javascript - 在 Javascript 中通过 onclick 事件调用的函数中使用此函数

PHP 和 Javascript 兼容的加密函数

ruby - Splat 运算符或正则表达式不起作用?