递归合并数组

function array_merge_recursive_new() {

        $arrays = func_get_args();
        $base = array_shift($arrays);

        foreach ($arrays as $array) {
            reset($base); //important
            while (list($key, $value) = @each($array)) {
                if (is_array($value) && @is_array($base[$key])) {
                    $base[$key] = array_merge_recursive_new($base[$key], $value);
                } else {
                    $base[$key] = $value;
                }
            }
        }

        return $base;
    }

  http://www.yiibai.com/manual/php/function.array-merge-recursive.html

时间: 2024-08-07 02:20:33

递归合并数组的相关文章

php中array_merge合并数组详解

如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的).如果数组是数字索引的,则键名会以连续方式重新索引. 注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引. 代码如下 复制代码 <?php$a=array(3=>"Horse",4=>"Dog");print_r(array_merge($a));?> 将一个或多个数组的单元合并起

PHP合并数组

1.arrary_merge 示例代码: $arr1 = array(1, 2, 3, 4, 5); $arr2 = array(1, 2, 6, 7, 8, 9, 10); $result1 = array_merge($arr1, $arr2); $arr3 = array("name" => "itbsl", "age" => 13, "sex" => "Male"); $arr4

php 合并数组 &quot;+&quot;和&quot;array_merge&quot;的区别

主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖) 2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值 <?php$array1 = array(0 => 'zero_a', 2 => 

PHP合并数组array_merge函数运算符加号与的区别

两个的区别是:1.数组键名为数字键名时,要合并的两个数组中有同名数字KEY的时候,使用array_merge()不会覆盖掉原来的值,而使用"+"合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值"抛弃"掉(注意:不是覆盖而是保留最先出现的那个值).例子: $array1 = array(1=>'0′);$array2 = array(1=> "data");$result1 = $array2 + $arr

合并数组的小技巧

合并数组 如果你要合并两个数组,一般情况之下你都会使用Array.concat()函数: var array1 = [1,2,3]; var array2 = [4,5,6]; console.log(array1.concat(array2)); // [1,2,3,4,5,6]; 然后这个函数并不适合用来合并两个大型的数组,因为其将消耗大量的内存来存储新创建的数组.在这种情况之个,可以使用Array.pus().apply(arr1,arr2)来替代创建一个新数组.这种方法不是用来创建一个新

递归实现数组求和

#include<stdio.h> int sum(int* a, int n) { return (0 == n)?0:(sum(a,n-1) + a[n-1]); } void sum1(int* a, int n,int& s) { if(0 == n) return; else { s = s + a[n-1]; sum1(a,n-1,s); } } ///用return方案的话,就是先可以递归最底层,然后再从最底层开始计算回来,从下层向上层传数据 ///如果使用形参的话,在递

JS合并数组的几种方法及优劣比较

这篇文章主要介绍了JS合并数组的几种方法及优劣比较,本文讲解了concat.循环插入.reduce等方法合并数组,并对它们的优劣做了比较,需要的朋友可以参考下 本文属于JavaScript的基础技能. 我们将学习结合/合并两个JS数组的各种常用方法,并比较各种方法的优缺点. 我们先来看看具体的场景: 代码如下: var q = [ 5, 5, 1, 9, 9, 6, 4, 5, 8];var b = [ "tie", "mao", "csdn",

递归逆转链表和递归合并有序链表的代码

#include <stdio.h> struct node { int val; struct node *pNext; }; struct node *gen() { struct node *pHead = NULL; for(int i = 10; i > 0; i--){ struct node * p = malloc(sizeof(struct node)); p -> val = i; p -> pNext = pHead; pHead = p; } retu

PHP 合并数组 追加数组例子

PHP合并数组我们可以使用array_merge()函数,array_merge()函数返回一个联合的数组.所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加.其形式为: array array_merge (array array1 array2…,arrayN) 下面是一个PHP合并数组的例子: <?php $fruits = array("apple","banana","pear"); $numbered = a