組織結構的遞迴輸出方法

2021-10-08 18:32:39 字數 1641 閱讀 9512

一道php筆試題的解法,遞迴地輸出組織架構下的每乙個人的所有下屬,

大家可以先根據題目自己動手試一下

<?php

$team=[

'張三'

=>

['劉備'

=>

['張飛'

=>

null

,'關羽'

=>

['馬良'

=>

null],

],'孟達'

=>

null],

'李四'

=>

['王五'

=>

['曹操'

=>

['荀攸'

=>

null

,'賈詡'

=>

null

,'郭嘉'

=>

null

,'程昱'

=>

null,]

,'張郃'

=>

null,]

],];

/** * 要求:根據組織結構輸出每個人的所有下屬

* 比如:根據示例中的組織結構可以構造出:

* 張三: 劉備,張飛,關羽,馬良,孟達

* 劉備:張飛、關羽、馬良

* 張飛:

* 關羽:馬良

* 馬良:

* 孟達:

*//*$items = [

'劉備' => [

'張飛' => null,

'關羽' => [

'馬良' => null,

'關平' => null,],]

];*/

$result=[

];function

getchild

($parentkey

,$values,&

$result

)foreach

($values

as$k

=>$v)

, v:

";if

(empty($v

))else}}

foreach

($team

as$k

=>$v)

//print_r($result);

foreach

($result

as$k

=>$v)

else

echo""

;}}

最終的輸出結果:

張飛:

劉備:張飛 關羽 馬良

馬良:關羽:馬良

張三:劉備 張飛 關羽 馬良 孟達

孟達:荀攸:

曹操:荀攸 賈詡 郭嘉 程昱

賈詡:郭嘉:

程昱:王五:曹操 荀攸 賈詡 郭嘉 程昱 張郃

張郃:李四:王五 曹操 荀攸 賈詡 郭嘉 程昱 張郃

可以看出遞迴方法 getchild 要處理層級關係,

該方法構建時,需要想清楚其中的傳參,如果只傳入 $team變數、很難構造出清晰的上下級關係,如果傳入的是當前的key和其子節點陣列,則層次關係更清晰一些,編碼也更容易一些。切記,分析問題,找到切入點 比立即動手寫更重要。

Ruby的輸出方法

print hello world.n 下劃線部分被稱為string物件或者字串物件,也可以直接稱這部分為字串。資料在程式中表現為物件。在ruby中,字串 數值 時間等各種資料都是物件。注 n是換行符,與大多數語言一樣。print是乙個方法。所謂方法就是物件的行為。print方法的作用就是輸出 裡的...

Oracle PL SQL 過程除錯的輸出方法

1.最基本的dbms output.put line 方法。隨便在什麼地方,只要是begin和end之間,就可以使用dbms output.put line output 然而這會有乙個問題,就是使用該函式一次最多隻可以顯示255個字元,否則緩衝區會溢位。此外,函式dbms output.enabl...

Oracle PL SQL過程除錯的輸出方法

1.最基本的dbms output.put line 方法。隨便在什麼地方,只要是begin和end之間,就可以使用dbms output.put line output 然而這會有乙個問題,就是使用該函式一次最多隻可以顯示255個字元,否則緩衝區會溢位。此外,函式dbms output.enabl...