[請益] 請教php多層陣列比對並更新
各位大大好~
小弟不才,最近接到一個任務,就是寫出二維以上之兩陣列比對的class或function,
而兩陣列的各有指定key=>value值,假如一個陣列是現有的陣列資料,
另一陣列來自json_decode產生出的陣列。
---------------------------------------------------------------------------
程式需求敘述:
需求是要以"現有陣列資料"為主,
第一、若唯一識別值存在於"現有陣列資料"中,
且該筆相對應的陣列資料於"json_decode陣列"中有更新值,
則進行"現有陣列資料"更新"
(※僅限於"現有陣列資料"原有的key相對應的value值做更新,
而"json_decode陣列"多餘的key=>value值則忽略);
第二、若唯一識別值不存在於"現有陣列資料"中,
則新增該筆"唯一識別值陣列"到"現有陣列資料"中。
目標:在最終回傳一個需要更新的完整陣列
如下所示:
---------------------------現有的陣列資料--------------------------
Array
(
[330] => Array
(
[id] => 330
[state] => 0
[date] => 2014-01-08
[time] => Array
(
[time1] => 1400
[time2] => 1500
[time3] => 1600
)
)
[331] => Array
(
[id] => 331
[state] => 1
[date] => 2014-01-08
[time] => Array
(
[time1] => 0800
[time2] => 0830
[time3] => 0840
)
)
)
-------------------------------------------------------------------
------------------------來自json_decode陣列------------------------
Array
(
[330] => Array
(
[id] => 330
[state] => 2
[date] => 2014-01-08
[time] => Array
(
[time1] => 1400
[time2] => 1430
[time3] => 1500
)
[creater] => 8951
)
[333] => Array
(
[id] => 333
[state] => 1
[date] => 2014-01-08
[time] => Array
(
[time1] => 1600
[time2] => 1630
[time3] => 1700
)
)
)
-------------------------------------------------------------------
--------------------------最終目標產生陣列-------------------------
Array
(
[330] => Array
(
[id] => 330
[state] => 2
[date] => 2014-01-08
[time] => Array
(
[time1] => 1400
[time2] => 1430
[time3] => 1500
)
)
[333] => Array
(
[id] => 333
[state] => 1
[date] => 2014-01-08
[time] => Array
(
[time1] => 1600
[time2] => 1630
[time3] => 1700
)
)
)
-------------------------------------------------------------------
紅色字體為json_decode陣列資料中有該key=>value,但現有陣列資料沒有
綠色字體為欲更新的部分。
-------------------------------------------------------------------
請問各位大大們有什麼建議的方法嗎? 小弟目前是想以遞歸方式來做,
但遇到若有更多層陣列的話,不知道該如何指定到正確的陣列位址來進行資料更新,
請各位大大不吝給予小弟賜教,謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.6.65
※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1396857871.A.47F.html
※ 編輯: NdhuOD (140.109.6.65), 04/07/2014 16:15:05
推
04/07 16:51, , 1F
04/07 16:51, 1F
→
04/07 16:52, , 2F
04/07 16:52, 2F
→
04/07 16:53, , 3F
04/07 16:53, 3F
→
04/07 17:30, , 4F
04/07 17:30, 4F
→
04/07 17:31, , 5F
04/07 17:31, 5F
→
04/07 17:32, , 6F
04/07 17:32, 6F
→
04/07 17:32, , 7F
04/07 17:32, 7F
推
04/07 17:38, , 8F
04/07 17:38, 8F
→
04/07 17:39, , 9F
04/07 17:39, 9F
→
04/07 17:40, , 10F
04/07 17:40, 10F
→
04/07 17:41, , 11F
04/07 17:41, 11F
→
04/07 17:56, , 12F
04/07 17:56, 12F
→
04/07 17:57, , 13F
04/07 17:57, 13F
→
04/07 17:58, , 14F
04/07 17:58, 14F
→
04/07 17:59, , 15F
04/07 17:59, 15F
→
04/07 17:59, , 16F
04/07 17:59, 16F
→
04/07 18:00, , 17F
04/07 18:00, 17F
推
04/07 18:02, , 18F
04/07 18:02, 18F
→
04/07 18:03, , 19F
04/07 18:03, 19F
→
04/07 18:05, , 20F
04/07 18:05, 20F
→
04/07 18:05, , 21F
04/07 18:05, 21F
→
04/07 18:06, , 22F
04/07 18:06, 22F
→
04/07 18:09, , 23F
04/07 18:09, 23F
→
04/07 18:09, , 24F
04/07 18:09, 24F
→
04/07 18:09, , 25F
04/07 18:09, 25F
推
04/07 18:12, , 26F
04/07 18:12, 26F
→
04/07 18:12, , 27F
04/07 18:12, 27F
推
04/07 18:14, , 28F
04/07 18:14, 28F
→
04/07 18:14, , 29F
04/07 18:14, 29F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章