×

phparray递归

phparray递归(php递归函数桃子一天吃一半)

admin admin 发表于2023-03-31 00:06:09 浏览54 评论0

抢沙发发表评论

本文目录一览:

php 几种常用的递归 无限极分类

 /**

     * 递归实现无限极分类

     * @param $array 分类数据

     * @param $pid 父ID

     * @param $level 分类级别

     * @return $list 分好类的数组 直接遍历即可 $level可以用来遍历缩进

     */

    function getTree($array, $pid =0, $level = 0){

        //声明静态数组,避免递归调用时,多次声明导致数组覆盖

        static $list = [];        foreach ($array as $key = $value){            //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点-phparray递归

            if ($value['pid'] == $pid){                //父节点为根节点的节点,级别为0,也就是第一级

                $value['level'] = $level;                //把数组放到list中

                $list[] = $value;                //把这个节点从数组中移除,减少后续递归消耗

                unset($array[$key]);                //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1

                getTree($array, $value['id'], $level+1);

            }

        }

php 递归分类 $arr = array() 具体作用

$arr = array(); 只是 定义 数组 而且是在 循环外边定义的 当然不会清空数组,

就是在循环外边定义一个数组

然后在 循环里边 给它赋值。。

php递归拼接数组

你的循环有问题,递归的时候没有重新赋值

while($row=mysql_fetch_array($res)){

    array_push($arr,$row['ID']);

    $arr = $this-push_id($arr,$row['ID']);//注意这行

}

PHP:数值数组叠加的递归方法

-数值数组叠加的递归方法:几个相同格式的数组的对应项叠加,得到一个此种格式的数组

-@param array(数组1, 数组2, ...)

-@return array 数组为上面数组1,数组2,...的对应项叠加

PHP 递归处理数组,并组合成新的数组

/**

 * 多维数组递归合并

 */

function multimerge(){

    $arrs = func_get_args();

    $merged = array();

    while($arrs){

        $array = array_shift($arrs);

        if(!$array){

            continue;

        }

        foreach ($array as $key = $value){

            if (is_string($key)){

                if (is_array($value)  array_key_exists($key, $merged)  is_array($merged[$key])){

                     $merged[$key] = call_user_func(__FUNCTION__, $merged[$key], $value);

                }else{

                     $merged[$key] = $value;

                }

            }else{

                    $merged[] = $value;

            }

        }

    }

    return $merged;

}

$a1 = array('user' = array('name' = 'tony', 'score' = 23));

$a2 = array('user' = array('name' = 'tony', 'score' = 255), 'name' ='tom');

$a3 = array('user' = array('name' = 'tony', 'score' = 288, 'test' = 'abc'), 'name' ='jack');

$result= multimerge($a1, $a2, $a3);

var_dump($result);