数组合并是什么?

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 数组合并相关推荐

  1. php数组的21个操作合并,拆分,删除,排序…

    1.合并 数组 array _merge()函数将 数组 合并到一起,返回一个联合的 数组 .所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加.其形式为: array array ...

  2. java两个有序数组的初始化_leecode:88–合并两个有序数组 | 星尘

    给定两个有序整数数组 nums1和 nums2,将 nums2合并到 nums1中,使得 num1成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n. 你可以 ...

  3. 数组——两个有序数组的合并

    题目:有元素按照递增有序排列的两个数组arr,和brr,将brr的元素合并到arr中,且arr中的元素依然有序.arr的大小足够存放arr的有效元素和brr的有效元素. 例如: arr[10] = { ...

  4. JS 数组常用函数(数组合并、数组转字符串、顺序反转、范围选择、排序、插入数据、删除数据)

    创建数组 var mycars = new Array(); mycars[0] = "Saab"; mycars[1] = "Volvo"; mycars[2 ...

  5. Python给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1

    给定两个有序整数数组nums1和nums2,合并nums1和nums2为数组nums1, 注意: 数组nums1和nums2初始化元素个数分别为m和n 假设num1有足够空间(长度超过m+n或与其相等 ...

  6. html数组拼接,多个数组合并成一个

    如何优雅的将多个数组合并成一个数组 import java.util.Arrays; //Java中如何把两个数组合并为一个 public class gog { public static void ...

  7. 【system verilog】非合并数组、合并数组、混合数组和多维数组的小探讨

    前言 来了的话点个赞吱一声在走呀~~~ 因为需要解决一个问题,所以决定对合并数组/非合并数组以及混合场景进行进行一下探索. 问题 已知一个多维混合数组的定义为: bit [3:0][7:0][15:0 ...

  8. Golang 数组的简单操作之合并数组与删除某个索引的值

    Golang 数组的简单操作之合并数组与删除某个索引的值 Golang轻松学习 文章目录 Golang 数组的简单操作之合并数组与删除某个索引的值 一.接口数组([]interface{})是什么? ...

  9. 细说PHP笔记03(第7章)--数组与数据结构,数组定义,数组遍历,数组内部指针遍历,键值操作函数,统计数组函数,回调函数处理数组元素,数组排序,拆分、合并、分解、结合数组,数组实现堆栈,随机选取元素

    1.数组 索引数组:索引值是整数 关联数组:索引值是字符串 2.数组的定义 1.以直接赋值的方式声明 $数组名[下标]=资料内容 或 $数组名[关联字符串(键值)]=资料内容 <?php $va ...

最新文章

  1. javascript 之---正则表达式
  2. 无限“递归”的python程序
  3. APU(美国AMD公司研发的加速处理器)
  4. Linux配置rsylogs日志发送,syslog强大而安全的日志处理系统
  5. vue (可读写)全局变量的 定义、任意调用、值的修改
  6. 水一贴,用任何一种语言导出oracle存储过程(视图)脚本
  7. Python min() 方法
  8. 认真分析mmap:what? why? how?
  9. 不能说のsecret 5
  10. JavaScript打开APP
  11. 数据权属权益的法律讨论
  12. 哪些技术会决定前端开发者的未来发展?
  13. React 接入 Ueditor + xiumi
  14. 什么是session
  15. redis主从和集群
  16. Unity 之 ShaderGraph Channel节点解析汇总
  17. 交易系统五:海龟交易法
  18. 祝贺|蚂蚁金服技术人许寄入选2018 MIT TR 35全球榜单
  19. 2017年手机html5的发展,HTML5明年年中发展成熟 或带来行业洗牌
  20. 计算机科学与技术在生物方面的应用,浅谈信息技术在生物工程中的应用意义

热门文章

  1. 云服务器8M公网带宽实际下载/上传速度是多少?
  2. java 不换行输出_java的输入输出
  3. bowtie2萌新使用手册
  4. Vue数组更新检测无效
  5. 什么是dns,dns的工作流程是什么
  6. 自媒体配音素材怎么找?4个办法教你
  7. 手把手教姐姐写消息队列(golang)- 使用channel实现消息队列
  8. Js + Vue 实现时间差计算
  9. Deepin RISCV 修包流程问题总结
  10. 关于我在windows使用volatility取证这档事