如何多次将多维数组的值添加到同一个对象中?
解决多维数组值批量添加到同一对象的问题
原代码存在的问题
- 若
setProductSku($data2)是覆盖式设置而非追加逻辑,最终对象里只会保留最后一个$data2的值,无法实现多次添加的需求。 - 将
setProductSku的返回值赋值给原数组变量$data,会覆盖初始的多维数组,属于不必要的错误操作。
针对性解决方案
方案一:用类的追加方法实现(推荐)
如果PartnerRestrictionTransfer类提供了专门的追加方法(比如addProductSku),直接循环调用追加即可:
$test = new PartnerRestrictionTransfer(); foreach($data as $data2) { $test->addProductSku($data2); // 每次调用追加一个SKU,而非覆盖原有值 } print_r($test); die;
方案二:先收集所有SKU再批量设置
如果类支持通过数组批量设置SKU(即setProductSku可接收数组参数),先把多维数组的所有值收集到一个数组中,再一次性传入方法:
$test = new PartnerRestrictionTransfer(); $skuCollection = []; foreach($data as $data2) { $skuCollection[] = $data2; // 收集所有需要添加的SKU } $test->setProductSku($skuCollection); // 一次性批量设置 print_r($test); die;
方案三:通过获取-修改-重设实现追加
如果类只有setProductSku单值设置方法,但提供了getProductSku获取当前值的方法,可以通过以下方式实现追加:
$test = new PartnerRestrictionTransfer(); foreach($data as $data2) { $currentSkus = $test->getProductSku(); // 处理初始值非数组的情况 $currentSkus = is_array($currentSkus) ? $currentSkus : ($currentSkus ? [$currentSkus] : []); $currentSkus[] = $data2; // 追加新的SKU $test->setProductSku($currentSkus); // 重新设置回对象 } print_r($test); die;
内容的提问来源于stack exchange,提问作者Anurag Baliyan
相关产品推荐
相关产品推荐

