2016-07-29 2 views
0

に重なる場合、私は、配列のいくつかの要素をマージする: - 日付が重なる場合、素子マージたとえばマージ要素日付

を:

配列:

ID:1 START_DATE。 2016年5月5日 END_DATE:2016年10月5日 量:5

ID:2 START_DATE:2016年12月5日 END_DATE:2016年12月5日 量:20

ID:3 START_DATE:2016年9月5日 END_DATE:15/05/2016 量:50

番号:4 START_DATE:05/05/2016 END_DATE:2016年10月5日 量:100

番号:5 START_DATE:2016年1月8日 END_DATE:2016年1月8日 量:10

第1解析:

ID:1 START_DATE:2016年5月5日 END_DATE:15/05/2016 量:155

D:2 START_DATE:2016年12月5日 END_DATE。 2016年12月5日 量:20

番号:5 START_DATE:2016年1月8日 END_DATE:2016年1月8日 量:10

2解析:

ID:1 START_DATE:2016年5月5日 END_DATE:15/05/2016 量:175

番号:5 START_DATE:2016年1月8日 END_DATE。 01/08/2016 数量:10

私は明らかです。 実際にこれを行うには私はwhileループと2 foreachが必要ですが、それは非常に高価です。 PHPでこれを行うには、最善の方法は何ですか?

おかげ

答えて

0

あなたは、最小と最大の合併でなければならないとの一日を持っているすべての日付、その後、あなたの日付で最小の日、各月の最高の日を取ることができます。あなたは一つのループで終わることができ

+0

こんにちは、exemple idの無it'snt作品、1 => START_DATE:2016年5月5日終了日2015年5月5日 ID 2 => START_DATE:15/05/2016終了日25/05/2015 id3 =>開始日:08/05/2016終了日08/05/2015 日付が重複しないため、マージできません。 – Olaf

+0

ご迷惑をおかけして申し訳ございません。開始日と終了日の差が最も大きい日付を選択して開始し、終了日がその間隔内にあるすべての日付とマージすることができます。同じ手順を繰り返しますが、前の日付は繰り返しません –

関連する問題