2014-09-08 4 views
-2

У меня есть JSon для меню я savved это нравится: -PHP: Как я могу поставить JSON Меню

[{"slug":"index.php","name":"Home"},{"slug":"aboutus","name":"About us","children":[{"slug":"eims","name":"Eims"},{"slug":"vision","name":"Vision"}]},{"slug":"trash","name":"Trash","children":[{"slug":"ways","name":"Ways­"},{"slug":"requ","name":"Requ"}]}] 

Теперь мне нужно преобразовать этот JSON в меню, как это: -

<li><a href="./" >Home</a></li> 
<li><a href="container.php?fun=aboutus" >About us</a>  
      <ul> 
       <li><a href="container.php?fun=eims">Eims</a></li> 
       <li><a href="container.php?fun=vision">Vision</a></li> 
      </ul> 
     </li> 
<li><a href="container.php?fun=trash">Trash</a> 
<ul> 
       <li><a href="container.php?fun=ways­">Ways­</a></li> 
       <li><a href="container.php?fun=requ">Requ</a></li> 
      </ul> 
     </li> 
</li> 

Как я могу это сделать?

+0

расшифровывает его, перебрать печатающие элементы, проверьте для детей, петли и печать тех – Jonathon

+0

Какого языка вы используете для генерации HTML? – lxg

+0

, если это всего лишь простые и фиксированные данные, вам не нужна рекурсивная функция, просто зациклируйте ее прямо – Ghost

ответ

0

Проверьте это.

<?php 
    function parseNodes($nodes) { 
      $ul = "<ul>\n"; 
      foreach ($nodes as $node) { 
        $ul .= parseNode($node); 
      } 
      $ul .= "</ul>\n"; 
      return $ul; 
    } 

    function parseNode($node) { 
      $li = "\t<li>"; 
      $li .= '<a href="'.$node->slug.'">'.$node->name.'</a>'; 
      if (isset($node->children)) { $li .= parseNodes($node->children); } 
      $li .= "</li>\n"; 
      return $li; 
    } 


    $json = '[{"slug":"index.php","name":"Home"},{"slug":"aboutus","name":"About us","children":[{"slug":"eims","name":"Eims"},{"slug":"vision","name":"Vision"}]},{"slug":"trash","name":"Trash","children":[{"slug":"ways","name":"Ways­"},{"slug":"requ","name":"Requ"}]}]'; 

    $nodes = json_decode($json); 

    $html = parseNodes($nodes); 

    echo $html; 
?> 
+0

Nice :) thankx много –

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