php数组的联合,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只能截取数组部分元素,而这个函数可以实现:批量替换,批量删除和批量插入
官方例子
// 删除
$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 协议》,转载必须注明作者和本文链接
有什么想法欢迎提问或者资讯
php数组的联合,PHP 数组合并相关推荐
- php数组的21个操作合并,拆分,删除,排序…
1.合并 数组 array _merge()函数将 数组 合并到一起,返回一个联合的 数组 .所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加.其形式为: array array ...
- java两个有序数组的初始化_leecode:88–合并两个有序数组 | 星尘
给定两个有序整数数组 nums1和 nums2,将 nums2合并到 nums1中,使得 num1成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. 你可以 ...
- 数组——两个有序数组的合并
题目:有元素按照递增有序排列的两个数组arr,和brr,将brr的元素合并到arr中,且arr中的元素依然有序.arr的大小足够存放arr的有效元素和brr的有效元素. 例如: arr[10] = { ...
- JS 数组常用函数(数组合并、数组转字符串、顺序反转、范围选择、排序、插入数据、删除数据)
创建数组 var mycars = new Array(); mycars[0] = "Saab"; mycars[1] = "Volvo"; mycars[2 ...
- Python给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1
给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1, 注意: 数组nums1和nums2初始化元素个数分别为m和n 假设num1有足够空间(长度超过m+n或与其相等 ...
- html数组拼接,多个数组合并成一个
如何优雅的将多个数组合并成一个数组 import java.util.Arrays; //Java中如何把两个数组合并为一个 public class gog { public static void ...
- 【system verilog】非合并数组、合并数组、混合数组和多维数组的小探讨
前言 来了的话点个赞吱一声在走呀~~~ 因为需要解决一个问题,所以决定对合并数组/非合并数组以及混合场景进行进行一下探索. 问题 已知一个多维混合数组的定义为: bit [3:0][7:0][15:0 ...
- Golang 数组的简单操作之合并数组与删除某个索引的值
Golang 数组的简单操作之合并数组与删除某个索引的值 Golang轻松学习 文章目录 Golang 数组的简单操作之合并数组与删除某个索引的值 一.接口数组([]interface{})是什么? ...
- 细说PHP笔记03(第7章)--数组与数据结构,数组定义,数组遍历,数组内部指针遍历,键值操作函数,统计数组函数,回调函数处理数组元素,数组排序,拆分、合并、分解、结合数组,数组实现堆栈,随机选取元素
1.数组 索引数组:索引值是整数 关联数组:索引值是字符串 2.数组的定义 1.以直接赋值的方式声明 $数组名[下标]=资料内容 或 $数组名[关联字符串(键值)]=资料内容 <?php $va ...
最新文章
- javascript 之---正则表达式
- 无限“递归”的python程序
- APU(美国AMD公司研发的加速处理器)
- Linux配置rsylogs日志发送,syslog强大而安全的日志处理系统
- vue (可读写)全局变量的 定义、任意调用、值的修改
- 水一贴,用任何一种语言导出oracle存储过程(视图)脚本
- Python min() 方法
- 认真分析mmap:what? why? how?
- 不能说のsecret 5
- JavaScript打开APP
- 数据权属权益的法律讨论
- 哪些技术会决定前端开发者的未来发展?
- React 接入 Ueditor + xiumi
- 什么是session
- redis主从和集群
- Unity 之 ShaderGraph Channel节点解析汇总
- 交易系统五:海龟交易法
- 祝贺|蚂蚁金服技术人许寄入选2018 MIT TR 35全球榜单
- 2017年手机html5的发展,HTML5明年年中发展成熟 或带来行业洗牌
- 计算机科学与技术在生物方面的应用,浅谈信息技术在生物工程中的应用意义