微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP 将对象从 foreach 循环推送到数组

如何解决PHP 将对象从 foreach 循环推送到数组

我设置了一个 post CURL 请求,我从前端接收数据,然后将其格式化为另一个第三方 API 可以接收的格式。

我正在努力解决如何通过 foreach 循环将一些动态产品数据添加到主数组列表中,因为这是一个发布请求,调试起来相当困难,我只是在前端收到了一个 cors 错误

$data = array(
        'TradingName'=>'Olivias','OrderNumber'=>$_POST['OrderNumber'],'OrderReference'=>$_POST['OrderReference'],'Recipient'=>$_POST['Recipient'],'Address'=>$_POST['Address'],'Postcode'=>$_POST['Postcode'],'ContactHome'=>$_POST['ContactHome'],'ContactWork'=>$_POST['ContactWork'],'ContactMobile'=>$_POST['ContactMobile'],'ContactEmail'=>$_POST['ContactEmail'],'Charge'=>$_POST['Charge'],'DeliveryInstructions'=>$_POST['DeliveryInstructions'],'OtherInstructions'=>$_POST['OtherInstructions'],'TimedService'=>$_POST['TimedService'],'ServiceType'=>$_POST['ServiceType'],'ServiceLevel'=>$_POST['ServiceLevel'],'DeliveryPoint'=>$_POST['DeliveryPoint'],'UnpackItems'=>$_POST['UnpackItems'],'TakePackagingAway'=>$_POST['TakePackagingAway'],'Assemble'=>$_POST['Assemble'],'disassemble'=>$_POST['disassemble'],'Collectdisposal'=>$_POST['Collectdisposal'],);
    

    
    foreach($_POST['fulfillmentItems'] as $i => $item){
            array_push($data,(object)[
                'Action_'.$i+1=>,'Deliver','QTY_'.$i+1=>1,'Code_'.$i+1=>$item[$i]['sku'],'Description_'.$i+1=>$item[$i]['description'],'Parts_'.$i+1=>1,'Weight_'.$i+1=>$item[$i]['weight'],'Cube_'.$i+1=>1,]);
        }

我只是想将底部列表添加到顶部列表中,例如 Action_1 ...... Action_2...

这是一个例子:-

'Recipient'=>'Joe Smith','Address'=>'2 Paramo House,Darlington','Postcode'=>'DL3 0LP','ContactHome'=>'','ContactWork'=>'01325 952050','ContactMobile'=>'','ContactEmail'=>'support@gsit.co.uk','Charge'=>32.50,'DeliveryInstructions'=>'Leave in Porch','OtherInstructions'=>'Customer hard of hearing','TimedService'=>'All Day','ServiceType'=>'Standard','ServiceLevel'=>'2 Man','DeliveryPoint'=>'Room Of Choice','UnpackItems'=>'','TakePackagingAway'=>'','Assemble'=>'','disassemble'=>'','Collectdisposal'=>'','Action_1'=>'Deliver','QTY_1'=>1,'Code_1'=>'HG00023','Description_1'=>'Silver Birch bed Frame','Parts_1'=>3,'Weight_1'=>23,'Cube_1'=>1,'Action_2'=>'Collect','QTY_2'=>1,'Code_2'=>'HG00023','Description_2'=>'Silver Birch bed Frame (damaged)','Parts_2'=>3,'Weight_2'=>23,'Cube_2'=>1     

解决方法

然后根据您想要的结果示例,您需要在 foreach 循环中执行此操作而不是 array_push()

$data = array(
        'TradingName'=>'Olivias','OrderNumber'=>$_POST['OrderNumber'],'OrderReference'=>$_POST['OrderReference'],'Recipient'=>$_POST['Recipient'],'Address'=>$_POST['Address'],'Postcode'=>$_POST['Postcode'],'ContactHome'=>$_POST['ContactHome'],'ContactWork'=>$_POST['ContactWork'],'ContactMobile'=>$_POST['ContactMobile'],'ContactEmail'=>$_POST['ContactEmail'],'Charge'=>$_POST['Charge'],'DeliveryInstructions'=>$_POST['DeliveryInstructions'],'OtherInstructions'=>$_POST['OtherInstructions'],'TimedService'=>$_POST['TimedService'],'ServiceType'=>$_POST['ServiceType'],'ServiceLevel'=>$_POST['ServiceLevel'],'DeliveryPoint'=>$_POST['DeliveryPoint'],'UnpackItems'=>$_POST['UnpackItems'],'TakePackagingAway'=>$_POST['TakePackagingAway'],'Assemble'=>$_POST['Assemble'],'Disassemble'=>$_POST['Disassemble'],'CollectDisposal'=>$_POST['CollectDisposal'],);
    
foreach($_POST['fulfillmentItems'] as $i => $item){
    $data['Action_'.$i+1]       = 'Deliver';
    $data['QTY_'.$i+1]          = 1;
    $data['Code_'.$i+1]         = $item['sku'];
    $data['Description_'.$i+1]  = $item['description'];
    $data['Parts_'.$i+1]        = 1;
    $data['Weight_'.$i+1]       = $item['weight'];
    $data['Cube_'.$i+1]          = 1;
            
}

完美运行!

,

如果您只想从 2 个数组中创建 1 个数组,只需执行 array_merge($array1,$array2)

$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));

这将输出

Array
(
    [0] => red
    [1] => green
    [2] => blue
    [3] => yellow
)

它比 array_push 更快,它会在将一个元素推到最后之前读取整个列表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。