為什麼這篇php array合併鄉民發文收入到精華區:因為在php array合併這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者marklaiw (漂亮的房子)看板PHP標題Re: [請益] 請教兩個二維陣列合併時間Fri ...
※ 引述《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