如何将数组用作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
相关产品推荐
相关产品推荐

