[英]PHP Combining Array within array
我正在編寫一個 API 並將數據發送到應用程序,我需要一些以某種方式格式化的數組,我似乎無法正確處理。
該消息存在於兩個數組之外:Order 和 Items。 Order 是單個數組,Items 似乎是數組內的一個數組,當訂購多個項目時會出錯。
所需格式:
{
"order": {
"email": "string",
"phone": "string",
"company": "string",
"firstName": "string",
...
},
"items": [
{
"description": "string",
"orderLineId": 0,
"priceType": "string",
"productCode": "string",
"productDescription": "string",
"quantity": 0,
"unitPrice": 0
}
{
"description": "string",
"orderLineId": 0,
"priceType": "string",
"productCode": "string",
"productDescription": "string",
"quantity": 0,
"unitPrice": 0
}
...
]
}
我得到的輸出:
{
"order": {
"email": "string",
"phone": "string",
"company": "string",
"firstName": "string",
...
},
"items": [
{
"description": "string",
"orderLineId": 0,
"priceType": "string",
"productCode": "string",
"productDescription": "string",
"quantity": 0,
"unitPrice": 0
}
],
“0”: {
"items": [
{
"description": "string",
"orderLineId": 0,
"priceType": "string",
"productCode": "string",
"productDescription": "string",
"quantity": 0,
"unitPrice": 0
}
]
}
...
}
使用的代碼:
$client = array (
"order"=>array(
"email" => $order->get_billing_email(),
"phone" => $order->get_billing_phone(),
"company" => $order->get_billing_company(),
"firstName" => $order->get_billing_first_name(),
)
);
foreach ($order->get_items() as $item_key => $item ){
$product = $item->get_product();
if(is_null($allitems)){
$allitems = array (
"items"=>array([
"description" => $item->get_name(),
"orderLineId"=>0,
"priceType"=>"string",
"productCode"=>$product->get_sku(),
"productDescription" =>"string",
"quantity" => $item->get_quantity(),
"unitPrice"=> $product->get_price()
])
);
}
else {
$singleitem = array (
"items"=>array([
"description" => $item->get_name(),
"orderLineId"=>0,
"priceType"=>"string",
"productCode"=>$product->get_sku(),
"productDescription" =>"string",
"quantity" => $item->get_quantity(),
"unitPrice"=> $product->get_price()
])
);
array_push($allitems, $singleitem);
}
}
# Combine client and items into one message
$message = array_merge($client, $allitems);
我嘗試了 array_merge、array_push 等的不同方法,但不知何故我無法按需要的方式獲取項目。 對此有何建議?
對於一個簡單的循環,您的解決方案看起來有點混亂和過於復雜。 看起來您正在重新聲明 items 值而不是添加到 items 數組。 我認為這應該更接近你所追求的:
$order_details = [
"email" => $order->get_billing_email(),
"phone" => $order->get_billing_phone(),
"company" => $order->get_billing_company(),
"firstName" => $order->get_billing_first_name(),
];
$all_items = [];
foreach( $order->get_items() as $item_key => $item ){
$this_product = $item->get_product();
$all_items[] = [
"description" => $item->get_name(),
"orderLineId"=>0,
"priceType"=>"string",
"productCode"=>$this_product->get_sku(),
"productDescription" =>"string",
"quantity" => $item->get_quantity(),
"unitPrice"=> $this_product->get_price()
];
}
$message = [
"order" => $order_details,
"items" => $all_items,
];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.