You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组用作PHP可变参数(...$addresses)类型的参数?

解决PHP可变参数方法传入数组的问题

你定义的to方法用了可变参数语法(...$addresses),它会把多个独立的Address或string参数打包成数组处理。但直接传数组时,这个数组会被当作单个参数,而方法要求的参数类型是Address|string,所以触发类型错误。

可行解决方案:

  • 使用数组展开运算符:调用方法时在数组前加...,将数组元素拆成独立参数传入,完全匹配方法的参数要求:

    $myList = [ "address-1", "address-2" ];
    $obj->to(...$myList);
    

    这等价于手动传入多个参数:$obj->to("address-1", "address-2");。

  • 修改方法兼容数组(可选):如果需要频繁直接传数组,可以调整方法逻辑,让它同时支持数组和单个参数:

    public function to(Address|string|array ...$addresses) {
        $processedAddresses = [];
        foreach ($addresses as $item) {
            if (is_array($item)) {
                $processedAddresses = array_merge($processedAddresses, $item);
            } else {
                $processedAddresses[] = $item;
            }
        }
        // 后续业务逻辑使用$processedAddresses即可
    }
    

    修改后,不管是单个参数、多个参数还是数组,都能正常调用。

内容的提问来源于stack exchange,提问作者Elikill58

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:48:12