代码之家  ›  专栏  ›  技术社区  ›  Collin White

钻取数组的方法比嵌套循环更好吗?

  •  0
  • Collin White  · 技术社区  · 15 年前

    2 回复  |  直到 15 年前
        1
  •  1
  •   GordonM    15 年前

    如果没有一个你正在处理的数据的例子,很难给出一个精确的实现,但是你描述的一般问题类通常可以通过递归来解决——一个调用自身的函数。

    <?php
    function deepPrintArr (array $arr)
    {
        $output = '';
        foreach ($arr as $elem)
        {
            if (is_array $elem)
            {
                $output .= deepPrintArr ($elem);
            }
            else
            {
                $output .= "<p>$elem</p>\n";
            }
        }
        return ($output);
    }
    
    echo (deepPrintArr ($some_deeply_nested_array));
    ?>
    
        2
  •  0
  •   Kees    15 年前

    请花点时间“阅读”drupal代码中的“/inc/menu.inc”。 例如,menu_get_active_trail()提供活动页的当前活动路径。这比循环递归遍历自己代码中的所有菜单项要容易得多。

    Qrios 我编写了一些代码来在Drupal中构建一个两级菜单:

       <?php $base_tree = menu_tree_page_data($use_menu);
        //Debug
        //print_r($tree);
        foreach ($base_tree as $item) {
          if ($item['link']['in_active_trail'] == 1){
            $tree = $item['below'];
          }else{
            $tree = array(); //empty array
          }
        } ?>
    

    不确定这是不是你的意思,但是你有了使用Drupals函数的想法。你只要找到他们就行了。

    推荐文章