есть я дерево массив, выглядит следующим образом:Нумерация Дерево Массив
$testArray = array(
array(
'id' => 12,
'address' => 'root addr',
'parent_id' => 0,
'children' => array(
array(
'id' => 11,
'address' => 'child addr',
'parent_id' => 12,
'children' => array(
array(
'id' => 16,
'address' => 'child addr 2',
'parent_id' => 11,
'children' => array(
array(
'id' => 19,
'address' => 'child addr 3',
'parent_id' => 16,
),
),
),
array(
'id' => 18,
'address' => 'child addr 4',
'parent_id' => 11,
),
array(
'id' => 20,
'address' => 'child addr 5',
'parent_id' => 11,
),
),
),
),
),
array(
'id' => 17,
'address' => 'root addr 2',
'parent_id' => 0,
),
);
У меня есть функция, чтобы построить массив с одним уровнем:
$result = array('aaData' => array());
function printTree($data, $level = 0, $p_counter = 1) {
foreach ($data as $item) {
if ($item['parent_id'] == 0) {
$addr = $p_counter . '. ' . $item['address'];
$p_counter++;
}
else if ($item['parent_id'] != 0) {
$addr = strLevel(' - ', $level) . $item['address'];
} else {
$addr = $item['address'];
}
global $result;
$result['aaData'][] = Array(
$addr,
);
if (isset($item['children'])) {
printTree($item['children'], $level + 1, $p_counter);
}
}
return $result;
}
другой функции, чтобы попытаться сделать нумерацию, но это не то, что я хочу:
function strLevel($str, $level) {
$level++;
$result = '';
for ($i = 1; $i < $level; $i++) {
if ($i == 1) {
$result .= $i . ' - ' . $i;
} else {
$result .= $str.$i;
}
}
$result .= '.';
return $result;
}
Мой вывод что-то вроде этого:
1. root addr
1 - 1.child addr
1 - 1 - 2.child addr 2
1 - 1 - 2 - 3.child addr 3
1 - 1 - 2.child addr 4
1 - 1 - 2.child addr 5
2. root addr 2
Но мне нужно, чтобы получить другую цифровую структуру, например:
1. root adrr
1-1. child adrr
1-1-1. child child addr
1-2. child addr
1-2-1. child child addr
1-3. child addr
1-3-1. child child addr
2. second root adr
2-1. child addr
2-1-1. child child addr
мне нужна помощь, чтобы построить этот числовой, спасибо!
Не совсем уверен в формулировке, но дайте человеку рыбу, накормите его на день. Научите человека рыбу, кормите его на всю жизнь (например, объясните свой ответ) – Daedalus
@Deadalus Может быть, это лучше немного – zavg
отлично, спасибо! Я хочу поместить данные в массив с одинаковой иерархией, когда я меняю вывод на вывод [], порядок разбит – user3111525