php - 求教:二維陣列 如何 透過 store_id 和 source 這兩個欄位相同進行合併呢?
过去多啦不再A梦
过去多啦不再A梦 2017-06-10 09:47:30
0
3
705
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 這兩個欄位相同進行合併呢?

过去多啦不再A梦
过去多啦不再A梦

全部回覆(3)
三叔

沒有現成的函數。只能自己寫了,而且不懂你說的合併是什麼意思。 。 。
可以循環下數據。
新資料使用$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,合併每個鍵對應的陣列中的資料。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!