Re: [請益] 請教兩個二維陣列合併

看板PHP作者 (漂亮的房子)時間9年前 (2016/03/18 08:36), 編輯推噓3(300)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《tq0551 (喵)》之銘言: : 大家好 : 目前還是 php 的新手 : 最近練習時遇到一個問題 : 假設目前有 A,B 兩個陣列 : 想把他們 date 如果相同的話,就把資料放一起 : --- array A 分隔線 --- : Array : ( : [1]=>array : ( : [date] = 20160301; : [cost] = 100; : ) : [2]=>array : ( : [date] = 20160304; : [cost] = 50; : ) : [3]=>array : ( : [date] = 20160305; : [cost] = 30; : ) : ) : ---------------------- : --- array B 分隔線 --- : Array : ( : [1]=>array : ( : [date] = 20160301; : [save] = 50; : ) : [2]=>array : ( : [date] = 20160302; : [save] = 20; : ) : ) : ----------------------- : --- 希望出來的結果是--- : Array : ( : [1] =>array : ( : [date] = 20160301; : [cost] = 100; : [save] = 50; : ) : [2] =>array : ( : [date] = 20160302; : [save] = 20; : ) : [3] =>array : ( : [date] = 20160304; : [cost] = 50; : ) : [4] =>array : ( : [date] = 20160305; : [cost] = 30; : ) : ) : ------------------------- : 目前是使用兩個 for 去過濾把同一天的資料放一起 : 再去排日期的順序,因為目前資料較少,後期資料會增加 : 想請問有更快速的方法來處理這個嗎 : 先謝謝各位了 技癢一下.... 1.準備一個$r陣列 2.$A,$B的陣列長度為$cntA,$cntB,取最大值為$c 3.for($i=0;$i<$c;$i++) { 4.如果$i<$cntA,將$A[cost]放在$r[$A[date]][cost] 5.如果$i<$cntB,將$B[save]放在$r[$B[date]][save] } 6.ksort($r); 理論上應該很快速,$c < 100萬 都不會有感覺 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.139.84 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1458261410.A.176.html

03/21 01:00, , 1F
謝謝m大的建議:)我會試試看的
03/21 01:00, 1F

03/27 13:50, , 2F
如果兩個日期剛好都不重覆就錯了耶
03/27 13:50, 2F

03/27 14:42, , 3F
對不起,是我錯了,剛還沒睡醒 ><"
03/27 14:42, 3F
文章代碼(AID): #1MwqsY5s (PHP)
討論串 (同標題文章)
文章代碼(AID): #1MwqsY5s (PHP)