作者marklaiw (漂亮的房子)
看板PHP
标题Re: [请益] 请教两个二维阵列合并
时间Fri Mar 18 08:36:46 2016
※ 引述《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://webptt.com/cn.aspx?n=bbs/PHP/M.1458261410.A.176.html
1F:推 tq0551: 谢谢m大的建议:)我会试试看的 03/21 01:00
2F:推 storyn26383: 如果两个日期刚好都不重覆就错了耶 03/27 13:50
3F:推 storyn26383: 对不起,是我错了,刚还没睡醒 ><" 03/27 14:42