PHP 数组合并
数组合并是什么?array_merge
/array_replace
/数组运算符
/array_splice
这次就是说上面的区别的。
1. array_merge
1)该函数,官方解释:将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。
2)如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。(说明不会保留数字索引)
3)如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。(不保留数字索引的结果)
例子:
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
4)该函数是非递归的,如果需要递归?array_merge_recursive()
可以做到
2. array_replace
这个函数优点类似,区别在于,他会把数字索引也会进行替换,其他的就与array_merge
一样。
1)也提供了一个递归的函数array_replace_recursive()
3. 数组操作符
是不是有点懵圈?没听说过?但是你可能用过
例子 | 名称 | 结果 |
---|---|---|
$a + $b | 联合 | $a 和 $b 的联合。 |
$a == $b | 相等 | 如果 $a 和 $b 具有相同的键/值对则为 TRUE。 |
$a === $b | 全等 | 如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。 |
$a != $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。 |
$a <> $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。 |
$a !== $b | 不全等 | 如果 $a 不全等于 $b 则为 TRUE。 |
其中第一行,"联合"。这与上面两个函数的区别是?
区别是相对的,相对于array_replace
来说,+操作符会保留第一个数组的元素,并不会发生替换,是一种补充的关系。而上面更像Mysql
中的replace into
或者on duplicate update
不过瘾?
好,在赠送两个。array_combine
和extract
array_combine(array $keys, array $values)
; 两个数组作为参数,并且合并。合并规则是,第一个数组的值作为合并之后的数组的键名,第二个数组的元素的值作为合并之后数组的元素的值。
extract
:”拉出“,将数组导入到当前符号表。符号表又是什么鬼?符号表是存储变量名和变量地址之间的对应关系的地方。就是将数组元素,变为独立的变量;其键名是变量名,元素值为变量值。
4、array_splice
array_splice
只能截取数组部分元素,而这个函数可以实现:批量替换,批量删除和批量插入
官方例子
<?php
// 删除
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input is now array("red", "green")
// 删除
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input is now array("red", "yellow")
// 替换
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input is now array("red", "orange")
// 替换
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input is now array("red", "green",
// "blue", "black", "maroon")
// 插入
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input is now array("red", "green",
// "blue", "purple", "yellow");
5、 作用
说了那么多,根本不知道这些数组合并有什么厉害的地方。array_replace
可以用于数组的更新和插入,上面说过,这就像是replace into
一样,你可以当数组是一个小型数据库。
例子:(名为add
,其实可以替换)
public function add(array $parameters = array())
{
$this->parameters = array_replace($this->parameters, $parameters);
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
这段打算介绍
array_slice
函数嘛,可是标题是array_splice
:sweat_smile:@sayhe110 哈哈,谢谢提醒,已经修改了