
给定一个数组:
1
|
$arr = array('b' => 'a', 'c' => 'a', 'e' => 'b', 'd' => 'b', 'f' => 'c', 'g' => 'e', 'h' => 'f');
|
给出可以完成以下格式转换的算法。
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
|
Array ( [a] => Array ( [b] => Array ( [e] => Array ( [0] => g ) [0] => d ) [c] => Array ( [f] => Array ( [0] => h ) ) ) )
|
算法实现:
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
|
class BDphp1 { private function php1($tmp_array, $start) { $result = array(); if ($ret = array_keys($tmp_array, $start)) { foreach ($ret as $v) { if ($rev = $this->php1($tmp_array, $v)) { $result[$v] = $rev; } else { $result[] = $v; } } } return $result; } public function bd_php1($tmp_array, $start = '') { $tmp = array(); if ($start == null) { $start = array_shift(array_values($tmp_array)); } $ret = $this->php1($tmp_array, $start); $tmp[$start] = $ret; return $tmp; } }
|
算法说明:主要使用 array_shift(),array_values(),array_keys() 函数和递归思想。
近期评论