blam Новичок 18 Мар 2010 #1 дерево (строка) -> массив ?? как порезать строку типа cat -cat1 -cat2 --cat3 --cat4 cat5 в массив PHP: array( [cat]=0, [cat1]='cat', [cat2]='cat', [cat3]='cat2', [cat4]='cat2', [cat5]=0, ) ???
дерево (строка) -> массив ?? как порезать строку типа cat -cat1 -cat2 --cat3 --cat4 cat5 в массив PHP: array( [cat]=0, [cat1]='cat', [cat2]='cat', [cat3]='cat2', [cat4]='cat2', [cat5]=0, ) ???
zerkms TDD infected Команда форума 18 Мар 2010 #2 своих мыслей совсем нет? 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); простите за готовый код, просто интересно стало, насколько элегантным получится алгоритм
своих мыслей совсем нет? 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 пилот капсулы 18 Мар 2010 #3 zerkms что то код у тебя не то делает судя по результату вар дампа а гоню "\r\n" -> "\n"
zerkms TDD infected Команда форума 18 Мар 2010 #4 Single разберёшь на строки уже как тебе удобнее, в зависимости от контекста.