搜尋

首頁  >  問答  >  主體

php - 求教:二維陣列 如何 透過 store_id 和 source 這兩個欄位相同進行合併呢?

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梦2819 天前771

全部回覆(3)我來回復

  • 三叔

    三叔2017-06-10 09:49:30

    沒有現成的函數。只能自己寫了,而且不懂你說的合併是什麼意思。 。 。
    可以循環下數據。
    新資料使用$store_id.'_'.$source這兩個欄位當key
    $data[$store_id.'_'.$source][] = $_data;
    這樣,或是你想怎麼處理

    回覆
    0
  • 漂亮男人

    漂亮男人2017-06-10 09:49:30

    不想寫程式碼,只說想法
    1.既然合併,假如id、goodsid不能被覆蓋掉,只能用三層結構數組即store_id、source為父類為一層,id、goodsid子類一層。
    2.兩個字段相同store_id、source合併,即將兩個字段合併未新的數組作為鍵值、假如有新的元素,就重新添加所有信息,假如不是,直接添加子元素

    回覆
    0
  • ringa_lee

    ringa_lee2017-06-10 09:49:30

    使用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,合併每個鍵對應的陣列中的資料。

    回覆
    0
  • 取消回覆