作为程序员一定要保持良好的睡眠,才能好编程

PHP合并数组的2种方法小结

发布时间:2018-04-16


php中 两个数组使用+号代表什么意思



<?php


class User{

    private static $tags=[];
    public $name;
    public $age;

    public function __construct(){

    }

    public function __set($key,$val){
        $this->$key=$val;
    }
    public function __get($key){
        return $this->$key;
    }

    public function info($d,$message){
        return "{$this->name}同学 {$this->age}岁"."-----{$d}:{$message}";
    }

    public static function import(array $tags){
        self::$tags[]=$tags+self::$tags;
    }

    public static function getTags(){
        return self::$tags;
    }
}

User::import(["name"=>"jjj"]);
User::import(["name"=>"dddd"]);
User::import(["name"=>"parent"]);

print_r(User::getTags());



这个意思 好像是累加,一级一级的向下加 ,看看结果吧:

我觉着如果只是为了顺序来使用这样的一个类型,比较差

执行结果:



Array
(
    [0] => Array
        (
            [name] => jjj
        )

    [1] => Array
        (
            [name] => dddd
            [0] => Array
                (
                    [name] => jjj
                )

        )

    [2] => Array
        (
            [name] => parent
            [0] => Array
                (
                    [name] => jjj
                )

            [1] => Array
                (
                    [name] => dddd
                    [0] => Array
                        (
                            [name] => jjj
                        )

                )

        )

)


如果上面例子看不太明白,紧接着看下面的操作实例:




最后结果:

两个数组中,如果键值都一样的话,前面数组中 直接替换后面的。





下面我们看一个最简单的例子:



示例1

data.png


键一样就替换了。



示例2

array_merge 函数合并结果示例如下:


data2.png





使用场景:


不需要多余参数时候,进行替换。




示例3:

//水果
$data1=[
  '苹果',
  '香蕉'
];

//干果
$data2=[
  '瓜子',
  '花生',
  '饼干'

];

echo '<pre>';
print_r($data1+$data2);

echo '</pre>';

//水果
$data1=[
  10=>'榴莲',
  '苹果',
  '香蕉'
];

//干果
$data2=[
  '瓜子',
  '花生',
  '饼干'

];
echo '<pre>';
print_r($data1+$data2);

echo '</pre>';


data3.png

 



示例四:

//水果
$data1=[
  'liulian'=>'榴莲',
  '苹果',
  '香蕉'
];

//干果
$data2=[
  '瓜子',
  '花生',
  '饼干'

];
echo '<pre>';
print_r($data1+$data2);

echo '</pre>';

data4.png

切记,只有是出现数字索引的key,

当前及后面没有key的都会被当前索引key进行累加。


其实这里和一个参数是类似,array_merge()  这个函数保留不一样的键值,都在里面。


上面的解释不是很到位,那么我们再来看看如何说明这是做什么 的


https://www.jb51.net/article/98166.htm