`
曾越明
  • 浏览: 11976 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

数组递归方法

    博客分类:
  • php
阅读更多
$items = array(
    1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),
    2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),
    3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),
    4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),
    5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),
    6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),
    7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),
    8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),
    9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),
    10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),
    11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),
    12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),
    13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),
    14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),
    15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),
    16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),
    17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),
    18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),
    19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),
);

方法一;
function genTree5($items) {
    foreach ($items as $item)
        $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
    return isset($items[0]['son']) ? $items[0]['son'] : array();
}

方法二:
    function findChild($arr,$id){
      $childs=array();
     foreach ($arr as $k => $v){
         if($v['pid']== $id){
              $childs[]=$v;
         }
    }
//    echo "<pre>";print_r($childs);die();
    return $childs;
}

function build_tree($root_id){
    global $items;
    $childs =array();
    $childs=findChild($items,$root_id);
//    print_r($childs);
//    die();
    if(empty($childs)){
        return null;
    }
   foreach ($childs as $k => $v){
       $rescurTree=build_tree($v['id']);
       if( null !=   $rescurTree){
       $childs[$k]['son']=$rescurTree;
       }
   }
    return $childs;
}
分享到:
评论

相关推荐

    PHP实现数组递归转义的方法

    下面我们就来详细解释PHP中实现数组递归转义的方法以及相关的知识点。 首先,了解PHP中的转义函数。在PHP中,最常用的转义函数是`addslashes()`, 它可以为字符串中的一组特殊字符添加反斜杠。这些特殊字符包括单...

    数组递归实现八皇后的代码

    数组递归实现八皇后的代码

    Java 数组递归算法的复杂度

    ### Java 数组递归算法的复杂度 #### 内容概览 本文主要探讨了Java中几种常见的排序算法(冒泡排序、选择排序、插入排序、希尔排序)以及递归算法的时间复杂度分析。通过具体代码示例和理论分析,帮助读者理解不同...

    PHP数组递归排序实现方法示例

    总结而言,PHP数组递归排序是处理多层级、多维数组排序问题的一个有效方法。通过上述示例,我们了解了递归排序的基本思想和实现步骤,以及如何结合自定义函数来完成复杂的数组操作任务。递归排序算法在很多场合都有...

    用php递归将二维数组转换成一维数组

    本文将详细介绍如何使用PHP的递归方法来实现这个转换。 首先,我们需要理解什么是递归。递归是一种编程技术,它允许函数或方法调用自身,以便解决复杂问题。在处理多层嵌套的数据结构如多维数组时,递归尤其有效。 ...

    JavaScript 树形结构数组处理之递归.html

    对递归深刻了解,不用看其他资料了

    php递归遍历多维数组的方法

    为了遍历并操作多维数组中的所有元素,递归是一个非常合适的方法。递归是一种算法设计技术,它允许函数调用自身。在处理多维数组时,当遇到子数组,函数会再次调用自己进行同样的操作,直到遍历完所有的数组元素。 ...

    java【第4章:数组与方法】_方法的声明及使用

    在学习数组与方法的过程中,你还会接触到方法重载、数组遍历、多维数组、静态方法、对象方法以及方法的递归调用等高级概念。熟练掌握这些内容将使你在编程实践中更加游刃有余。 通过《java【第4章:数组与方法】_...

    利用VB数组的方法实现汉诺塔游戏的设计

    汉诺塔游戏是一种经典的递归问题,通过...总的来说,通过VB数组的方法实现汉诺塔游戏设计,不仅锻炼了编程技巧,也加深了对递归和逻辑判断的理解,同时提供了一个趣味性的交互体验,使得抽象的数学问题变得生动有趣。

    递归实现的迷宫

    用递归实现的迷宫,用二维数组表示迷宫,借助函数的递归栈,深度优先搜索

    PHP递归生成TREE

    递归是一种函数或方法调用自身的技术,它通常用于处理具有层级关系的数据。在PHP中,递归常用于处理树形结构,因为树是由节点(每个节点可能有零个或多个子节点)构成的层次结构。 在给定的场景中,`tree.php` 文件...

    数组最大值(递归)

    利用递归方法求给定整型数组中的最大元素。 样例输入: 8 223 112 412 123 51 987 98 793 988 样例输出: 988

    递归反转数组:深度解析与代码实现

    虽然递归方法在概念上简单,但在处理大型数组时可能需要考虑性能和堆栈空间的限制。 通过本文的深入探讨和代码实践,读者应该能够理解如何使用递归反转数组,并能够在实际编程中应用这一技术。

    用递归查找有序二维数组的方法详解

    在本文中,我们将深入探讨如何使用递归方法在一个有序的二维数组中查找特定的整数。有序二维数组是指每行从左到右递增,每列从上到下递增的数组。这样的结构使得我们可以采用一种高效的方式来搜索目标值,而无需遍历...

    递归打印数组和找出最小数(C语言)

    在C语言中,递归是一种强大的编程技巧,它允许...递归方法简洁且易于理解,但也需要注意避免无限递归和效率问题,例如在处理大量数据时,非递归的迭代方法可能更合适。在实际编程中,根据具体需求选择最适合的方法。

    用递归算法编写求一个数组A中的最大元素

    - **效率问题**:对于大规模数据集,递归可能不如非递归方法高效。 - **调用深度限制**:如果递归调用层次过深,可能会导致栈溢出错误。 #### 六、总结 通过上述分析可以看出,递归算法在解决数组最大值问题时具有...

    上机实践02数组与方法答案.docx

    递归方法的关键在于找到终止条件(base cases),这里是n等于1或2,以及如何从当前情况(current case)逐步回归到终止条件。 练习3中,我们创建了一个名为`intArray`的类,该类有两个静态方法:`printArray`用于...

    C++递归数组排列及查询

    Please use recursion(递归)to get fibonacci numbers(一种整数数列). The user will specify(指定,详细说明) how many of the numbers he or she wants to print. You can use the main function to print ...

Global site tag (gtag.js) - Google Analytics