首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在递归循环中使用父数据

在递归循环中使用父数据
EN

Stack Overflow用户
提问于 2013-10-16 09:44:18
回答 1查看 134关注 0票数 0

在我下面的模式中,鼻涕虫像$parent_slug . '_' . url_title($posted_category_name)一样保存。

所以如果id_category = 1的鼻涕虫变了,例如Acura => My acura,它意味着所有的子段塞都必须按照循环中的$parent_slug . '_' . url_title($posted_category_name)来改变.但是怎么做呢?

在下面的数组中,我添加了递归函数。

数据阵列

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [id_category] => 1
            [id_parent] => 0
            [level] => 1
            [category] => Acura
            [slug] => acura
            [children] => Array
                (
                    [0] => Array
                        (
                            [id_category] => 3
                            [id_parent] => 1
                            [level] => 2
                            [category] => Vigor
                            [slug] => acura_vigor
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id_category] => 5
                                            [id_parent] => 3
                                            [level] => 3
                                            [category] => LS
                                            [slug] => acura_vigor_ls
                                            [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id_category] => 6
                                                            [id_parent] => 5
                                                            [level] => 4
                                                            [category] => Alt 1
                                                            [slug] => acura_vigor_ls_alt-1
                                                        )

                                                    [1] => Array
                                                        (
                                                            [id_category] => 7
                                                            [id_parent] => 5
                                                            [level] => 4
                                                            [category] => Alt 2
                                                            [slug] => acura_vigor_ls_alt-2
                                                        )

                                                )

                                        )

                                )

                        )

                )

        )

)

rebuild_category_slug_index($target_map)

代码语言:javascript
复制
  function rebuild_category_slug_index($target_table)
  {
    $active_table = tr_url_title($target_table);
    $this->db->table_exists('my_'.$active_table ) || show_error(lang('admin|erros|table_not_found'),'500',lang('admin|errors|header500'));

    $raw_data = $this->category_m->get('my_'.$active_table,array(),$order_str='id_category asc, id_parent asc',array(),'result_array'); // It just returns get all from table.

    if($raw_data)
    {
      $treearr = array('0' => array('children'=> array()));
      foreach($raw_data as $item)
      {
        // Here is the work. I should get $parent_slug and create current slug.
        // $item['slug'] = $parent_slug . '_' . tr_url_title($item['category']);
        $treearr[$item['id_category']] = $item;
        if(!isset($treearr[$item['id_parent']])) $treearr[$item['id_parent']] = array('children'=> array());
        $treearr[$item['id_parent']]['children'][] = &$treearr[$item['id_category']];
      }
      $tree = $treearr[0]['children'];
      unset($treearr);
      vdebug($tree); // For displaying formatted results
      //return $tree;
    }
  }

我被这个堆满了,任何光都会被欣赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-16 09:55:54

我会将数据恢复从函数中提取出来,或者创建一个新的递归函数。只是为了让你开始:

代码语言:javascript
复制
function recursive_rename($data, $parent_slug='')
  {
  foreach($data as $item)
    {
    // Set the $parent_slug
    if($imen['level'] = 1)
      {
      $item['slug'] = $item['category'];
      if ($parent_slug == '' || $parent_slug <> $item['category'])
        {
        $parent_slug = $item['category']
        }
      }
    else
      {
      $item['slug'] =  $parent_slug."_".$item['category'];
      }
    if(isset($item[children])) 
      {
     // call function again
      $out =  recursive_rename($item['children'],  $item['slug']);
      }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19400072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档