array(5) {
[0]=>
array(14) {
["id"]=>
string(3) "143"
["store_id"]=>
string(3) "504"
["goodsid"]=>
string(2) "15"
["source"]=>
string(1) "2"
}
[1]=>
array(14) {
["id"]=>
string(3) "142"
["store_id"]=>
string(3) "503"
["goodsid"]=>
string(2) "33"
["source"]=>
string(1) "2"
}
[2]=>
array(14) {
["id"]=>
string(3) "141"
["store_id"]=>
string(3) "638"
["goodsid"]=>
string(2) "41"
["source"]=>
string(1) "1"
}
[3]=>
array(14) {
["id"]=>
string(3) "140"
["store_id"]=>
string(3) "638"
["goodsid"]=>
string(2) "41"
["source"]=>
string(1) "1"
}
}
這樣的陣列 如何 透過 store_id 和 source 這兩個欄位相同進行合併呢?
沒有現成的函數。只能自己寫了,而且不懂你說的合併是什麼意思。 。 。
可以循環下數據。
新資料使用$store_id.'_'.$source這兩個欄位當key
$data[$store_id.'_'.$source][] = $_data;
這樣,或是你想怎麼處理
不想寫程式碼,只說想法
1.既然合併,假如id、goodsid不能被覆蓋掉,只能用三層結構數組即store_id、source為父類為一層,id、goodsid子類一層。
2.兩個字段相同store_id、source合併,即將兩個字段合併未新的數組作為鍵值、假如有新的元素,就重新添加所有信息,假如不是,直接添加子元素
使用hashmap的映射的方式:
1.建構一個hashmap形式的資料結構,將store_id,source組合當做一個key,用可變數組作為value,將store_id和source對應的整個資料存入可變數組.
2.便利二維數組,如果透過store_id,source組合出來的key已經存在於建構的資料結構,則將store_id和source對應的整個資料放入key對應的可變數組中,如果不存在,則加入一個新的鍵值對,同樣是source和store_id組合值作為key,可變數組作為value。將source,store_id對應的整個資料放入key對應的可變數組。
3.便利hashmap,合併每個鍵對應的陣列中的資料。