Структура данных PHP - XML ​​или дерево? - PullRequest
0 голосов
/ 19 августа 2009

Я хочу написать обобщенную функцию, которая может выводить что-то вроде этого.

<span class="side_title">By Collection</span>
            <ul class="menu">
                    <li class="top">
                    <a class="top_menu" href="#url">home</a>
                    </li>
                    <li class="sub">
                    <a href="#">collectionA</a>
                    <ul>
                            <li><a href="../index.html">collectionA-1</a></li>
                            <li><a href="#url">collectionA-2</a></li>
                    </ul>
                    </li>
                    <li class="sub">
                    <a href="#">collectionB</a>
                    <ul>
                            <li><a href="#url">collectionB-1</a></li>
                    </ul>
                    </li>
                    <li class="top"><a href="#url">CollectionE</a></li>
            </ul>

            <span class="side_title">By Functions</span>
            <ul class="menu">
                    <li class="top">
                    <a class="top_menu" href="#url">home</a>
                    </li>
                    <li class="sub">
                    <a href="#">functionA</a>
                    <ul>
                            <li><a href="../index.html">functionA-1</a></li>
                            <li><a href="#url">functionA-2</a></li>
                    </ul>
                    </li>
                    <li class="sub">
                    <a href="#">functionB</a>
                    <ul>
                            <li><a href="#url">functionB-1</a></li>
                            <li><a href="#url">functionB-2</a></li>
                    </ul>
                    </li>
                    <li class="top"><a href="#url">functionE</a></li>
            </ul>

но проблема в том, что я не могу найти структуру данных для представления этой структуры, я попробовал следующее (используя массив - где ключ - это содержимое ссылки, значение - это адрес. И рекурсия):

$a = array (
            "By collection" => '',
            'Base' => 'thisBase',
            "expand" => array (
                    'Home' => 'home',
                    'collectionA' => 'collectionA',
                    'expand' => array (
                            'collectiona-1' => 'collectiona-1',
                            'collectiona-2' => 'collectiona-2'
                    ),
                    'collectionB' => 'collectionb',
                    'expand' => array (
                            'collectionb-1' => 'collectionb-1',
                            'collectionb-2' => 'collectionb-2'
                    ),
                    'collectionB' => 'collectionb',
                    'expand' => array (
                            'collectionc-1' => 'collectionc-1',
                            'collectionc-2' => 'collectionc-2'
                    ),
            ),
            "by Function" => ''
    );


    function expand($a=NULL)
    {
            foreach ($a as $key => $value) 
            {
                    if ($value == '')
                    {
                            echo '<span class="side_title">'.$key.'</span>';
                            echo '<ul class="menu">';
                    } elseif (is_array($value))
                    {
                            echo '<ul class="sub_menu">';
                            expand($value);
                    } else {
                            echo '<li><a href="'.$value.'>'.$key.'</a></li>';
                    }
            }
            echo '</ul>';
    }

    print_r($a);

    expand($a);

Я думал об использовании xml / tree для его представления, но структура данных передается между различными функциями, поэтому я подумал, что это потребует больших усилий, поэтому я хочу знать, что с этим не так? или есть лучший способ?

1 Ответ

0 голосов
/ 21 августа 2009

Не знаю, решит ли это вашу проблему, но вы забыли закрытие "для атрибута href.

echo '<li><a href="'.$value.'">'.$key.'</a></li>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...