PHP 中array_merge, +


在PHP 中数组的合并与追加问题。

    说理论的总是太空洞,要看理论直接参考手册,这里通过例子来直观展示。

$ar = array(                   
            '1' => 'abc',      
            'g' => 'efg',      
        );
$arr = array(
            'g' => 'tom',      
            '3' => 'jack',     
        );

$merge = array_merge($ar, $arr);
var_dump($merge);
使用array_merge, 如果存在同样的非数字key ,那么后面的值将覆盖前面的值。这里的输出结果为:

array(3) {
  [0]=>
  string(3) "abc"
  ["g"]=>
  string(3) "tom"
  [1]=>
  string(4) "jack"
}


$arr1 = array(
            '1' => 'abc',
            'g' => 'efg',
        );
$arr2 = array(
            'g' => 'tom',
            '3' => 'jack',
        );

$add = $arr1+ $arr2; 
var_dump($add);

使用追加的方式合并数组,如果相同的key,那么后面数组的值去掉,依然保留前面key对应的值。这里的输出结果为:

array(3) {
  [1]=>
  string(3) "abc"
  ["g"]=>
  string(3) "efg"
  [3]=>
  string(4) "jack"
}


$arr1 = array(
            'a' => 'aaa',
            '5' => 'abc',
            'b' => 'bbb',
            '7' => 'efg',
            'c' => 'ccc',
        );
$arr2 = array(
            'd' => 'dddddd',
            '7' => 'tom',
            'a' => '0000',
            '3' => 'jack',
        );


$merge = array_merge($arr1, $arr2);
var_dump($merge);
         
如果合并数组中key 相同但是同位数字,那么将不会存在覆盖的情况,使用array_merge 后,会对所有的数字key 进行重写。保留原有顺序,key 从0 开始增加。相同的数字key 其值不会覆盖。这里的输出为:

array(8) {
  ["a"]=>
  string(4) "0000"
  [0]=>
  string(3) "abc"
  ["b"]=>
  string(3) "bbb"
  [1]=>
  string(3) "efg"
  ["c"]=>
  string(3) "ccc"
  ["d"]=>
  string(6) "dddddd"
  [2]=>
  string(3) "tom"
  [3]=>
  string(4) "jack"
}

$arr1 = array(
            'a' => 'aaa',
            '5' => 'abc',
            'b' => 'bbb',
            '7' => 'efg',
            'c' => 'ccc',
        );
$arr2 = array(
            'd' => 'dddddd',
            '7' => 'tom',
            'a' => '0000',
            '3' => 'jack',
        );


$add = $arr1+ $arr2;
var_dump($add);

这里做的是追加操作,虽然key = 7 在两数组中都是数字key 相同,也有字母相同的key。但是追加操作的意思就是存在的key, 后面的key如果相同,那么只保留前面存在的,后面的将被去掉,这里的输出为:

array(7) {
  ["a"]=>
  string(3) "aaa"
  [5]=>
  string(3) "abc"
  ["b"]=>
  string(3) "bbb"
  [7]=>
  string(3) "efg"
  ["c"]=>
  string(3) "ccc"
  ["d"]=>
  string(6) "dddddd"
  [3]=>
  string(4) "jack"
}


在手册中已经明确,使用“+” 表示将后面数组中的值追加到第一个数组中。也就是说,如果使用 + 的方式来合并两个数组,那么第一个数组的值是不会有任何变化的,但是第二个数组中值的保留情况就需要根据第一个数组的key 来判断了。如果第二个数组中的key 存在与第一个数组中,那么该值就不会出现在最后合并的结果中。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值