又一道數組題目


在 PHPChina 上又看到了一道顯目,難到了 = = …
題目大約是 : 不用任何函數,亦都不可以寫任何函數,要一迴圈,一行,一分號就做指定的格式..

數組如下 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?ph
$a_tree = array();
$a_list = array(
"11" =>array("id"=>11,"pid"=>0,"name"=>"a"),
"121" =>array("id"=>121,"pid"=>11,"name"=>"b"),
"122" =>array("id"=>122,"pid"=>11,"name"=>"c"),
"131" =>array("id"=>131,"pid"=>121,"name"=>"d"),
"132" =>array("id"=>132,"pid"=>121,"name"=>"e"),
"133" =>array("id"=>133,"pid"=>121,"name"=>"f"),
"231" =>array("id"=>231,"pid"=>122,"name"=>"g"),
"232" =>array("id"=>232,"pid"=>122,"name"=>"h"),
"241" =>array("id"=>241,"pid"=>132,"name"=>"i")
);
?>

產生的格式如下 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Array
(
[id] => 11
[pid] => 0
[name] => a
[b] => Array
(
[id] => 121
[pid] => 11
[name] => b
[d] => Array
(
[id] => 131
[pid] => 121
[name] => d
)

[e] => Array
(
[id] => 132
[pid] => 121
[name] => e
[i] => Array
(
[id] => 241
[pid] => 132
[name] => i
)

)

[f] => Array
(
[id] => 133
[pid] => 121
[name] => f
)

)

[c] => Array
(
[id] => 122
[pid] => 11
[name] => c
[g] => Array
(
[id] => 231
[pid] => 122
[name] => g
)

[h] => Array
(
[id] => 232
[pid] => 122
[name] => h
)

)

)

目前所得的神人級道碼為 :

1
2
3
4
foreach($a_list as $k => $v) { $v['pid'] == 0 ? $a_tree = &$a_list[$k] : $a_list[$v['pid']][$v['name']] = &$a_list[$k]; }

echo "<pre>";
print_r($a_tree);