Ради возможности поиска и индексации / сортировки массива
У меня есть большой многомерный массив, который я пытаюсь проанализировать.Прямо сейчас я просто использую оболочку CakePHP для этого, но подойдет любой метод.Что мне нужно сделать, это взять массив parent / children / more children и создать массив идентификаторов со связанным «Outline Number»
Так, например:
1
1.1
1.2
1.2.1
1.2.2
1.2.3
Ии т. д.
Вот пример моего «входного массива»:
Array
(
[0] => Array
(
[AsapStructure] => Array
(
[id] => 1
[lft] => 30267
[rght] => 32774
[parent_id] =>
[wbs] =>
)
[children] => Array
(
[0] => Array
(
[AsapStructure] => Array
(
[id] => 2
[lft] => 30268
[rght] => 30773
[parent_id] => 1
[wbs] => 1
)
[children] => Array
(
[0] => Array
(
[AsapStructure] => Array
(
[id] => 3
[lft] => 30269
[rght] => 30382
[parent_id] => 2
[wbs] => 1.1
)
То, что я предполагал, имело простой механизм синтаксического анализа, который саморекурсивен.Вот пример того, что я разработал:
<?php
var $structIndex = array();
private function __parseStruct( $toParse,$prefix = null ) {
$iterator = 0;
if ( $prefix )
$prefix = $prefix . '.';
foreach( $toParse as $datum ) {
$iterator++;
if ( $datum['AsapStructure']['id'] == 1 )
$this->structIndex[ 1 ] = NULL;
else
$this->structIndex[ $datum['AsapStructure']['id'] ] = $prefix . $iterator ;
$subiterator = 0;
foreach( $datum['children'] as $key => $data ) {
$subiterator++;
$this->structIndex[ $data['AsapStructure']['id'] ] = $prefix . $subiterator;
if ( ! empty( $datum['children'] ) ) {
$this->__parseStruct( $datum['children'], $subiterator );
}
}
}
return $this->structIndex;
}
?>
Что я делаю, так это то, что я вызываю эту функцию $this->__parseStruct( $data )
и передаю ей массив.Затем функция зацикливается на массиве, вызывая функцию для вложенных дочерних массивов.У меня эта часть работает нормально, я просто не могу понять, правильно ли логика для создания «индексов», то есть 1.1, 1.2, 1.2.1 и т. Д.
Так что мой целевой вывод будеттогда будьте:
$array[ $rowid ] = [ 1.1 / 1.2 / 1.2.1 / 1.2.2 ] or any combination as such.
Любая помощь с благодарностью.