дерево (строка) -> массив ??

blam

Новичок
дерево (строка) -> массив ??

как порезать строку типа
cat
-cat1
-cat2
--cat3
--cat4
cat5

в массив
PHP:
array(
  [cat]=0,
  [cat1]='cat',
  [cat2]='cat',
  [cat3]='cat2',
  [cat4]='cat2',
  [cat5]=0,
 )
???
 

zerkms

TDD infected
Команда форума
своих мыслей совсем нет?

PHP:
<?php

$tree = 'cat
-cat1
-cat2
--cat3
--cat4
cat5';

$stack = array(-1 => 0);

$new_tree = array();

foreach (explode("\r\n", $tree) as $node)
{
  $new_node = ltrim($node, '-');
  $current_level = strlen($node) - strlen($new_node);
  $stack[$current_level] = $new_node;
  $new_tree[$new_node] = $stack[$current_level - 1];
}

var_dump($new_tree);
простите за готовый код, просто интересно стало, насколько элегантным получится алгоритм :)
 

Single

пилот капсулы
zerkms
что то код у тебя не то делает судя по результату вар дампа
а гоню "\r\n" -> "\n"
 

zerkms

TDD infected
Команда форума
Single
разберёшь на строки уже как тебе удобнее, в зависимости от контекста.
 
Сверху