2009-08-19 2 views
0

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

<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 для его представления, но структура данных проходит между различными функциями, поэтому я думал, что это будет много усилий, поэтому я хочу знать, что с этим не так? или есть лучший способ?

+0

Что (существенная) разница, проходит ли ваш массив $ а или Объект DOMDocument для функции? – VolkerK

+0

Я думаю, что нет никаких различий. –

ответ

0

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

echo '<li><a href="'.$value.'">'.$key.'</a></li>'; 
+0

спасибо за помощь, но проблемы там нет. Я сдался и реализовал ее "тупой путь" –

Смежные вопросы