[請益] 請教php多層陣列比對並更新

作者: NdhuOD (OD)   2014-04-07 16:04:28
各位大大好~
小弟不才,最近接到一個任務,就是寫出二維以上之兩陣列比對的class或function,
而兩陣列的各有指定key=>value值,假如一個陣列是現有的陣列資料,
另一陣列來自json_decode產生出的陣列。
作者: bobju (枯藤老樹昏鴉)   2014-04-07 16:51:00
遞歸? 什麼意思? 這應該用個 foreach loop 就行了另外 更多層陣列的層數有沒有規則可循? 若沒有的話雖然也可以處理 就看程式技巧了 php處理這種東西正合適
作者: NdhuOD (OD)   2014-04-07 17:30:00
是遞迴才對~上面筆誤~bobju大大說的foreach loop我有用到,但又考慮要對應到key值,就比較難處理,想開發不僅只適用2~3層的陣列,希望能夠是一體適用,多層都可以利用此class還請大大指點迷津,謝謝您~
作者: bobju (枯藤老樹昏鴉)   2014-04-07 17:38:00
一般是可以用[reference]的機制來為樹當中的節點做定位若能先定義出具體資料結構, 用它來解析會比較容易解說這篇文章當中的範例就只能是個 [key=>array] 的 node list,看不出你會如何用它來描述樹狀結構
作者: NdhuOD (OD)   2014-04-07 17:56:00
小弟希望是能夠使用樹狀結構,以每筆資料的PK作為根節點,但是不知道該如何使用tree的reference方式,小弟用笨方法,每進一層就用key=>value方式來取索引和值,但第二層之後就不知道如何找到reference的根節點,只知道目前的key=>value330、331、333那些表示的就是PK,也就是小弟想拿來做根節點請大大指導小弟>"<,感謝您~
作者: bobju (枯藤老樹昏鴉)   2014-04-07 18:02:00
假設 node 用 $node 表示, &$node 就是其reference你可以在做 recursive traversal 時, 把每組 $key => $node的關係改為 $key => &$node_ref, 而 $node_ref 則複製到另一個全域範圍的 array 裏, 其內容即為$node的內容好像很複雜 @_@總之 一定能處理就對了 技巧也不限於此 或許你玩一玩就玩出心得來了
作者: NdhuOD (OD)   2014-04-07 18:09:00
謝謝大大~讓小弟思考一下,不懂的地方再請教您~謝謝>"<
作者: sunnyvisit (visit)   2014-04-07 18:12:00
其實也可以考慮先定義出一組需要的key 之後foreach去一組你要的格式資料是我的話,就從你給我的資料中拿出我要的資料,再組成我想要的樣子。這樣可以不用去判斷是否有更新。

Links booklink

Contact Us: admin [ a t ] ucptt.com