1
我使用以下函數將標籤列表轉換爲數組,但深度爲1的標籤添加到數組[1]中;爲什麼深度爲1的行添加到數組[1]
選項卡列表:
$test = "Test
Sub Item Test 1 (Test)
Sub Item Test 2 (Test)
Sub Sub Item Test 1 (Sub Item Test 2)
Sub Sub Sub Item Test 1 (Sub Item Test 2)
Test 2
Sub Item Test 1 (Test 2)
Test 3
Sub Item Test 1 (Test 3)
Test 4
Sub Item Test 1 (Test 4)
Test 5
Sub Item Test 1 (Test 5)";
功能:
function convert($list, $indent = "\t") {
$main = array();
foreach (explode(PHP_EOL, $list) as $line) {
$depth = substr_count($line, $indent);
$line = trim($line);
if ($line == '') {
continue;
}
$a = &buildArray($main, $depth, 0, $line);
$a[$i++] = $line;
}
return $main;
}
function &buildArray(&$array, $depth, $current = 0, $line = null) {
if ($depth == $current) {
return $array;
} else {
foreach ($array as &$value) {
if (is_array($value)) {
return buildArray($value, $depth, ++ $current);
}
}
$tmp = array();
$array[] = &$tmp;
return buildArray($tmp, $depth, ++ $current);
}
}
這裏是運行 「轉換($測試)」
Array
(
[0] => Test
[1] => Array
(
[1] => Sub Item Test 1 (Test)
[2] => Sub Item Test 2 (Test)
[3] => Array
(
[0] => Array
(
[3] => Sub Sub Item Test 1 (Sub Item Test 2)
)
[4] => Sub Sub Sub Item Test 1 (Sub Item Test 2)
)
[6] => Sub Item Test 1 (Test 2)
[8] => Sub Item Test 1 (Test 3)
[10] => Sub Item Test 1 (Test 4)
[12] => Sub Item Test 1 (Test 5)
)
[5] => Test 2
[7] => Test 3
[9] => Test 4
[11] => Test 5
)
那麼爲什麼會後的結果數組[1] [6]而不是數組[6],對於數組[5]之後的所有行,依此類推?