从数组+对象创建嵌套的UL LI的PHP函数

问题描述:

我有这样的数组+对象。从数组+对象创建嵌套的UL LI的PHP函数

Array 
(
    [0] => stdClass Object 
     (
      [tid] => 1 
      [parent_id] => 0 
      [language] => th 
      [t_type] => category 
      [t_name] => cat1 
      [t_description] => 
      [t_uri] => cat1 
      [t_uri_encoded] => cat1 
      [t_uris] => 
      [meta_title] => 
      [meta_description] => 
      [meta_keywords] => 
      [childs] => Array 
       (
        [0] => stdClass Object 
         (
          [tid] => 3 
          [parent_id] => 1 
          [language] => th 
          [t_type] => category 
          [t_name] => cat1.1 
          [t_description] => 
          [t_uri] => cat1.1 
          [t_uri_encoded] => cat1.1 
          [t_uris] => 
          [meta_title] => 
          [meta_description] => 
          [meta_keywords] => 
          [childs] => Array 
           (
            [0] => stdClass Object 
             (
              [tid] => 5 
              [parent_id] => 3 
              [language] => th 
              [t_type] => category 
              [t_name] => cat1.1.1 
              [t_description] => 
              [t_uri] => cat1.1.1 
              [t_uri_encoded] => cat1.1.1 
              [t_uris] => 
              [meta_title] => 
              [meta_description] => 
              [meta_keywords] => 
             ) 

           ) 

         ) 

        [1] => stdClass Object 
         (
          [tid] => 4 
          [parent_id] => 1 
          [language] => th 
          [t_type] => category 
          [t_name] => cat1.2 
          [t_description] => 
          [t_uri] => cat1.2 
          [t_uri_encoded] => cat1.2 
          [t_uris] => 
          [meta_title] => 
          [meta_description] => 
          [meta_keywords] => 
         ) 

       ) 

     ) 

    [1] => stdClass Object 
     (
      [tid] => 2 
      [parent_id] => 0 
      [language] => th 
      [t_type] => category 
      [t_name] => cat2 
      [t_description] => 
      [t_uri] => cat2 
      [t_uri_encoded] => cat2 
      [t_uris] => 
      [meta_title] => 
      [meta_description] => 
      [meta_keywords] => 
     ) 

) 

此数组+对象中JSON字符串

[{"tid":"1","parent_id":"0","language":"th","t_type":"category","t_name":"cat1","t_description":null,"t_uri":"cat1","t_uri_encoded":"cat1","t_uris":null,"meta_title":null,"meta_description":null,"meta_keywords":null,"childs":[{"tid":"3","parent_id":"1","language":"th","t_type":"category","t_name":"cat1.1","t_description":null,"t_uri":"cat1.1","t_uri_encoded":"cat1.1","t_uris":null,"meta_title":null,"meta_description":null,"meta_keywords":null,"childs":[{"tid":"5","parent_id":"3","language":"th","t_type":"category","t_name":"cat1.1.1","t_description":null,"t_uri":"cat1.1.1","t_uri_encoded":"cat1.1.1","t_uris":null,"meta_title":null,"meta_description":null,"meta_keywords":null}]},{"tid":"4","parent_id":"1","language":"th","t_type":"category","t_name":"cat1.2","t_description":null,"t_uri":"cat1.2","t_uri_encoded":"cat1.2","t_uris":null,"meta_title":null,"meta_description":null,"meta_keywords":null}]},{"tid":"2","parent_id":"0","language":"th","t_type":"category","t_name":"cat2","t_description":null,"t_uri":"cat2","t_uri_encoded":"cat2","t_uris":null,"meta_title":null,"meta_description":null,"meta_keywords":null}] 

如何创建嵌套UL里这样。

<ul> 
    <li>cat1 
    <ul> 
     <li>cat1.1 
      <ul> 
       <li>cat1.1.1</li> 
      </ul> 
     </li> 
     <li>cat1.2</li> 
    </ul> 
    </li> 
    <li>cat2</li> 
</ul> 

这是我曾尝试

echo list_nested_cat($list_item); 
function list_nested_cat($list_item, $start = 0) { 
    echo '<ul style="margin-left: 1em;">'; 
    foreach ($list_item as $item) { 
     if (isset($item->childs) && is_array($item->childs)) { 
      echo '<li>'.$item->t_name.'</li>'; 
      list_nested_cat($item->childs); 
     } else { 
      echo '<li>'.$item->t_name.'</li>'; 
     } 

    } 
    echo '</ul>'; 
} 

但这个函数不正确呼应HTML嵌套UL李格式。

ps。我从arnaud576875

PHP tree structure for categories and sub categories without looping a query

+0

请张贴丑数组作为JSON字符串用于测试目的? – iambriansreed 2012-04-25 03:51:48

+0

@iambriansreed我发布了JSON字符串,请求。 – vee 2012-04-25 09:14:19

+0

@vee我用它来测试我的代码并修复了一些错误。查看发布的更新代码。 – iambriansreed 2012-04-25 15:40:24

的代码中创建数组对象这应该让你开始:

它使用一个递归函数;它自称。

更新

测试了JSON对象,并修正了一些错误

<?php  

echo make_ulli($object); 

function make_ulli($array){ 
    if(!is_array($array)) return ''; 

    $output = '<ul>'; 
    foreach($array as $item){ 

     $output .= '<li>' . $item->t_name;  

     if(property_exists($item, 'childs')) 
      $output .= make_ulli($item->childs); 

     $output .= '</li>'; 

    } 
    $output .= '</ul>'; 

    return $output; 
} 


?> 
+1

@vee现在它工作得很好。谢谢! – iambriansreed 2012-04-25 15:39:49