Php CMap::Yii中的合并阵列
我知道Yii中的CMap::mergeArray合并了两个数组。但我有三个数组,我想让它们通过CMap::mergeArray合并。那么如何在Yii框架中合并所有三个数组。使用Php CMap::Yii中的合并阵列,php,arrays,yii,Php,Arrays,Yii,我知道Yii中的CMap::mergeArray合并了两个数组。但我有三个数组,我想让它们通过CMap::mergeArray合并。那么如何在Yii框架中合并所有三个数组。使用($ar1,$ar2,$ar3)或($ar1,$ar2,$ar3) 您还可以使用: CMap::mergeWith(array($ar1, $ar2, $ar3)); 但我不确定前者的结果,这取决于你想要什么。需要注意的关键区别是CMap将覆盖现有密钥,这与内置php函数不同: 如果每个数组都有一个具有相同字符串键值的元
($ar1,$ar2,$ar3)
或($ar1,$ar2,$ar3)
您还可以使用:
CMap::mergeWith(array($ar1, $ar2, $ar3));
但我不确定前者的结果,这取决于你想要什么。需要注意的关键区别是CMap将覆盖现有密钥,这与内置php函数不同: 如果每个数组都有一个具有相同字符串键值的元素,则 后者将覆盖前者(不同于 数组(合并(递归) 如果您像上面那样执行CMap::mergeWith,您将得到一个新的数组,该数组由3个数组作为子元素组成: 例如,给定以下结构:
$foo = array (
'a' => 1,
'b' => 2,
'c' => 3,
'z' => 'does not exist in other arrays',
);
$bar = array (
'a' => 'one',
'b' => 'two',
'c' => 'three',
);
$arr = array (
'a' => 'uno',
'b' => 'dos',
'c' => 'tres',
);
使用CMap::mergeWith如下所示:
$map = new CMap();
$map->mergeWith (array($foo, $bar, $arr));
print_r($map);
结果如下:
CMap Object
(
[_d:CMap:private] => Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
[z] => does not exist in other arrays
)
[1] => Array
(
[a] => one
[b] => two
[c] => three
)
[2] => Array
(
[a] => uno
[b] => dos
[c] => tres
)
)
[_r:CMap:private] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)
如果覆盖元素是首选行为,则以下操作将起作用:
$map = new CMap ($foo);
$map->mergeWith ($bar);
$map->mergeWith ($arr);
print_r($map);
其结果是:
CMap Object
(
[_d:CMap:private] => Array
(
[a] => uno
[b] => dos
[c] => tres
[z] => does not exist in other arrays
)
[_r:CMap:private] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)
但是,如果您希望附加数据,则:
$map = new CMap (array_merge_recursive ($foo, $bar, $arr));
print_r($map);
我会带你去的:
CMap Object
(
[_d:CMap:private] => Array
(
[a] => Array
(
[0] => 1
[1] => one
[2] => uno
)
[b] => Array
(
[0] => 2
[1] => two
[2] => dos
)
[c] => Array
(
[0] => 3
[1] => three
[2] => tres
)
[z] => does not exist in other arrays
)
[_r:CMap:private] =>
[_e:CComponent:private] =>
[_m:CComponent:private] =>
)
Yii只是一个PHP框架,因此所有核心PHP函数都将在Yii中工作。但是,如果您尝试使用array\u merge/array\u merge\u recursive合并CMap对象而不是PHP数组,您将得到一个错误。