Fecshop 2016-07-08 09:24:56 6949次浏览 0条评论 1 0 0

yii\helpers\ArrayHelper::merge()

原文链接:yii2 方法的介绍:关于helper类 ArrayHelper::merge()

在web/index.php入口文件就可以看到这个方法:

譬如:


    $config = yii\helpers\ArrayHelper::merge(
        # yii2  common config
      require(__DIR__ . '/../../common/config/main.php'),
        require(__DIR__ . '/../../common/config/main-local.php'),
        # yii config
      require(__DIR__ . '/../config/main.php'),
      require(__DIR__ . '/../config/main-local.php'),
      # yii fecshop config
      require(__DIR__ . '/../../vendor/fancyecommerce/fecshop/config/fecshop.php'),
      # yii fecshop appfront config
      require(__DIR__ . '/../../vendor/fancyecommerce/fecshop/app/appfront/config/appfront.php'),
      # third people  config
      
      # user second develop config.
      
      require(__DIR__ . '/../config/fecshop_local.php')
        
    );
    $config['homeUrl'] = $homeUrl;
    $application = new yii\web\Application($config);

需要注意的是ArrayHelper::merge方法,合并后的数组结果是什么:

下面通过例子讲解:


    $arr1 = [
      'name'   => 'terry',
      'age'  =>  15,
      'friend'=> [
        'zhangsan','lisi'
      ],
      'work' =>[
        'aa'  => 11,
        'bb'  => ['aa','bb'],
      ],
    ];
    $arr2 = [
      'name'   => 'water',
      'age'  =>  22,
      'friend'=> [
        'zhangsan','wangwu'
      ],
      'work' =>[
        'cc'  => ['77','bb'],
        'aa'  => 22,
      ],
    ];
    $arr3 = yii\helpers\ArrayHelper::merge($arr1,$arr2);

$arr3的值为:

array(4) { [“name”]=> string(5) “water” [“age”]=> int(22) [“friend”]=> array(4) { [0]=> string(8) “zhangsan” [1]=> string(4) “lisi” [2]=> string(8) “zhangsan” [3]=> string(6) “wangwu” } [“work”]=> array(3) { [“aa”]=> int(22) [“bb”]=> array(2) { [0]=> string(2) “aa” [1]=> string(2) “bb” } [“cc”]=> array(2) { [0]=> string(2) “77” [1]=> string(2) “bb” } } }

可以看到这个数组的作用:

1.如果key是数字,那么value就会进行数组合并,如果值相同,不会覆盖,会出现两个相同值的数组元素,譬如[1,2]和[2,3]通过merge函数合并的结果为[1,2,2,3].

2.如果数组的key不是数字,而且数组里面的value不是数字,则value会被覆盖掉

譬如[‘aa’ => ‘xxx’]和[‘aa’=>’yy’] merge函数后的结果为[‘aa’=>’yy’],

3.如果数组的key不是数字,而value是数组(数组的key是数字),则会进行数组合并。

4.如果数组的key不是数字,而value是数组(数组的key不是数字),则value数组中的key回合第二个步骤那样处理。

具体可以自己琢磨,因此在使用这个方法的时候,要想key覆盖,key一定要用字符串,就和变量定义一样。

    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册