由于混合使用int和字符串键,以下代码将无法编译:

function func(...$array) {}

func(...[ 'a' => 'A', 2 => 'B', 'c' => 'C' ]);

为什么抛出错误:Cannot use positional argument after named argument during unpacking?

请注意,我的问题不是:为什么抛出this错误?而是为什么给出这个特定的错误消息,对我来说,这似乎与实际原因(int和字符串键的混合)无关.

推荐答案

我们有Argument Unpacking个加起来Named Arguments个.此情况在Variadic functions and argument unpacking处解释:

Foo(...$args)从参数解包RFC中解包语法也支持解包命名参数.

任何带有字符串键的值解压缩为命名参数.整数键被视为正常的位置参数(忽略整数值).

参数解包还遵循位置参数必须始终位于命名参数之前的一般规则.

Php相关问答推荐

为什么PHP输出\n而不是实际创建一个新元素?

打印SQL表内容时在DIV内添加断点

如何发送woocommerce订单跟踪码与短信

如何在WordPress中为特定自定义帖子类型自定义URL struct

在保留唯一键值对的情况下高效合并嵌套数组

在Woocommerce变量产品中的标签附近显示所选属性选项名称

Nginx重写扩展名为.php的动态URL

Laravel Livewire如何在数组值上使用IF、ELSE条件

PHP -多维数组到一维数组

这是在可召回的背景下吗?

Chillerlan/php-iOS名称字段的QR vCard错误

如何在PHP中组合日期范围

在WordPress中从CPT中删除插件

使用CODIGNITER3中的OR和AND子句进行查询

PHP 8.2 弃用日志(log)存储在 Laravel 10.22.0 中的哪里?

使用 foreach php 将记录正确分配给正确的父级

避免在 WooCommerce 中多次触发挂钩函数

在 PHP 8.2 中使用 PHP Spreadsheet 和 CodeIgniter 3 导出 Excel 时出错

为WooCommerce中的Guest用户保存唯一的客户代码到订单中

如何在PHP中对多个脚本调用进行排队?