2016-03-11 47 views
-1

我有兩個陣列:插入數據

$sizes$percentages

$sizes看起來像這樣:

"sizes":{"0":{"size_id":5,"it":"50","us":"32"},"1":{"size_id":4,"it":"48","us":"30"}}, 

$percentages這樣的:

"percentages":[{"5":"70"},{"4":"30"}] 

我想在基於百分數的$鍵值$大小數組中的百分比SERT的數據=爲「size_id」在$大小和這樣結束:

"sizes_with_percentage":{"0":{"size_id":5,"percentage":70,it":"50","us":"32"},"1":{"size_id":4,"percentage":30"it":"48","us":"30"}}, 

我嘗試了一些嵌套的循環,但我沒有找到一個正確的方式,並array_push_assoc返回一個「調用未定義的bla bla錯誤」。

+2

你用拼寫錯誤混合了方括號,或者你的原點是JSON字符串? 「未定義的bla bla error」不存在:請報告確切的錯誤(undefined index?)和相對代碼行。順便說一句,是起源是一個JSON的錯誤可能是由於調用一個對象而不是一個數組。但是你必須發佈JSON字符串和你的代碼。 – fusion3k

回答

1

假設你已經第一次使用json_decode在這裏創造出真正的數組:

$sizes = json_decode('{"0":{"size_id":5,"it":"50","us":"32"},"1":{"size_id":4,"it":"48","us":"30"}}', true); 
$percentages = json_decode('[{"5":"70"},{"4":"30"}]', true); 

您可以構建一個$final陣列倒也乾脆。

首先循環遍歷大小,將它們添加到$final,使用size_id作爲數組鍵。這將使以下步驟變得更容易。

foreach($sizes AS $size) { 
    $final[$size['size_id']] = $size; 
} 

現在通過百分比循環,並用鑰匙將尋找合適的$final項,並添加比例元素。

foreach($percentages AS $percentage) { 
    $final[key($percentage)]['percentage'] = current($percentage); 
} 

你完成了!如果你不希望$final陣列仍然由size_id鍵可以刪除:

$final = array_values($final); 

當然,如果你想輸出爲JSON:

$finalJson = json_encode($final); 

工作例如:https://3v4l.org/LR8Tv

+0

謝謝,$大小和$百分比都是php數組[] ...我認爲輸出是由JSON格式化擴展在鉻中解析,因此混亂。我試過這個代碼(只有第二部分,沒有json_decode),它的工作原理。 – Chriz74