array+array 与 array_merge() 遇到重复键名的处理、Yii2或Laravel的merge()与array_merge()区别联系

一、键名杂乱,有的无键名
1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)

2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值

<?php
    $a = array('a','b');  
    $b = array('c', 'd');  
    $c = $a + $b;  
    var_dump($c);  echo "<br>";
    var_dump(array_merge($a, $b)); echo "<hr>";  
//array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } 
//array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" }


    $a = array(0 => 'a', 1 => 'b');  
    $b = array(0 => 'c', 1 => 'e');  
    $c = $a + $b;  
    var_dump($c);  echo "<br>";
    var_dump(array_merge($a, $b));   echo "<hr>";  
//array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } 
//array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "e" }      


    $a = array('name' => 'a', 'school' => 'b','grade'=>'99');  
    $b = array('name' => 'c', 'price' => 'b');  
    $c = $a + $b;  
    var_dump($c);  echo "<br>";
    var_dump(array_merge($a, $b));   echo "<hr>";  
//array(4) { ["name"]=> string(1) "a" ["school"]=> string(1) "b" ["grade"]=> string(2) "99" ["price"]=> string(1) "b" } 
//array(4) { ["name"]=> string(1) "c" ["school"]=> string(1) "b" ["grade"]=> string(2) "99" ["price"]=> string(1) "b" }


    $a = array('name'=>'a', 'school'=>'b');  
    $b = array(0 => 'c', 1 => 'b');  
    $c = $a + $b;  
    var_dump($c);  echo "<br>";
    var_dump(array_merge($a, $b));   echo "<hr>";  
//array(4) { ["name"]=> string(1) "a" ["school"]=> string(1) "b" [0]=> string(1) "c" [1]=> string(1) "b" } 
//array(4) { ["name"]=> string(1) "a" ["school"]=> string(1) "b" [0]=> string(1) "c" [1]=> string(1) "b" }
?>

二、键名整齐

<?php
$a=array(
'request'=>'123123',
'answer'=>'haha',
'name'=>'张三',
);
$b=array(
'request'=>'890890',
'answer'=>'hehe',
'name'=>'李四',
);

$c=[$a,$b];//或者array($a,$b);而不能array+array或者array_merge
var_dump($c);
//array(2) { [0]=> array(3) { ["request"]=> string(6) "123123" ["answer"]=> string(4) "haha" ["name"]=> string(6) "张三" } [1]=> array(3) { ["request"]=> string(6) "890890" ["answer"]=> string(4) "hehe" ["name"]=> string(6) "李四" } }

三、Yii2或Laravel的merge()与array_merge()区别联系

$t1= ['a'=>['dd'],'b'=>'bb'];
$t2= ['a'=>['cc'],'b'=>'mm'];
var_dump(\Yii\helpers\ArrayHelper::merge($t1,$t2));
var_dump(array_merge($t1,$t2));
// array(2) {
//   'a' =>
//   array(2) {
//     [0] =>
//     string(2) "dd"
//     [1] =>
//     string(2) "cc"
//   }
//   'b' =>
//   string(2) "mm"
// }

// array(2) {
//   'a' =>
//   array(1) {
//     [0] =>
//     string(2) "cc"
//   }
//   'b' =>
//   string(2) "mm"
// }

http://blog.csdn.net/xubaoguo/article/details/12914971

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值