一、合并、拆分、接合和分解数组

1、合并数组

array_merge() 函数将数组合并在一起,返回一个新数组。

$a = array("a","b","c");$b = array("d","e","f");$c = array_merge($b,$a);print_r($c); //Array ( [0] => d [1] => e [2] => f [3] => a [4] => b [5] => c )

2、递归追加数组

array_merge_recursive() 函数与 array_merge() 函数都是合并数组,两者的区别在于当输入数组用有某个键已经存在的时候的处理方法的不同:

array_merge:覆盖前面的同名键值;

array_merge_recursive:合并同名键为一个以键值为数组名称的数组,数组值为同名键的值的集合。

$a = array("k1"=>"a","k2"=>"b","k3"=>"c");$b = array("k1"=>"d","k4"=>"e","k5"=>"f");$c = array_merge($b,$a);print_r($c); //Array ( [k1] => a [k4] => e [k5] => f [k2] => b [k3] => c )

print "
";$d = array_merge_recursive($b,$a); //Array ( [k1] => Array ( [0] => d [1] => a ) [k4] => e [k5] => f [k2] => b [k3] => c )

print_r($d);

3、合并数组

array_combine() 数组与array_merge()不同之处再约array_merge是合并数组的值,array_combine是用第一个数组的值作为第二个数组的键,所以array_combine的输入参数的大小必须相同。

$a = array("k1"=>"a","k2"=>"b","k3"=>"c");$b = array("k1"=>"d","k4"=>"e","k5"=>"f");$c = array_combine($b,$a);print_r($c); //Array ( [d] => a [e] => b [f] => c )

4、拆分数组

array_slice() 函数将返回数组中的一部分,从offset键开始,到offset + length位置结束。

$a = array("k1"=>"a","k2"=>"b","k3"=>"c","k4"=>"d","k5"=>"e","k6"=>"f");$c = array_slice($a,3);print_r($c); //Array ( [k4] => d [k5] => e [k6] => f )

5、截取数组

array_splice() 函数将会截取数组中从offse开始,到offset + length位置结束的所有元素,并返回截取的元素(以数组形式)。

截取后,原数组则剩余未被截取部分。

$a = array("k1"=>"a","k2"=>"b","k3"=>"c","k4"=>"d","k5"=>"e","k6"=>"f");$c = array_splice($a,3);print_r($c); //Array ( [k4] => d [k5] => e [k6] => f )

print "
";print_r($a); //Array ( [k1] => a [k2] => b [k3] => c )

可选参数replacement可以用一个数组填充被截取的部分到原数组中。

$a = array("k1"=>"a","k2"=>"b","k3"=>"c","k4"=>"d","k5"=>"e","k6"=>"f");$c = array_splice($a,3,3,array("k7"=>"g","k8"=>"h"));print_r($c); //Array ( [k4] => d [k5] => e [k6] => f )

print "
";print_r($a); //Array ( [k1] => a [k2] => b [k3] => c [0] => g [1] => h )

6、求数组的交集

array_intersect() 函数 返回输入数组的值的交集。

扩展:array_intersect_key() 获取数组的键的交集。array_intersect_ukey() 允许用户自定义函数进行键比较。

$a = array("A","B","C","D");$b = array("E","F","G","H","B","C");$c = array("I","J","B","K","C","L");$d = array_intersect($a,$b,$c);print_r($d); //Array ( [1] => B [2] => C )

7、求关联数组的交集

array_intersect_assoc() 函数除了和 array_intersect() 一样比较值之外,还比较键是否相同。就是说,它取键值对一致的交集。

$a = array("a"=>"A","b"=>"B","C","D");$b = array("E","F","G","H","b"=>"B","C");$c = array("I","J","b"=>"B","K","C","L");$d = array_intersect_assoc($a,$b,$c);print_r($d); //Array ( [b] => B )

8、求数组的差集

array_diff() 函数求数组的差集,和 array_intersect() 相反。(是指获取第一个数组中有,但是其他数组中没有的值!)

$a = array("a"=>"A","b"=>"B","C","D");$b = array("E","F","G","H","b"=>"B","C");$c = array("I","J","b"=>"B","K","C","L");$d = array_diff($a,$b,$c);print_r($d); //Array ( [a] => A [1] => D )

9、求关联数组的差集

array_diff_assoc() 函数和 array_diff() 基本一致,不过它对键值对进行比较。

扩展:array_udiff_assoc()、array_udiff_uassoc()、array_diff_uassoc()等函数加入自定义函数进行比较。

$a = array("a"=>"A","b"=>"B","C","D");$b = array("E","F","G","H","b"=>"B","C");$c = array("I","J","b"=>"B","K","C","L");$d = array_diff_assoc($a,$b,$c);print_r($d); //Array ( [a] => A [0] => C [1] => D )

二、其他有用的数组函数

1、返回一组随机的键

array_rand() 函数将返回数组中一个或多个随机的键!

$a = array("a"=>"A","b"=>"B","c"=>"C","d"=>"D");$d = array_rand($a,2);print_r($d); //Array ( [0] => a [1] => d ) 随机结果

2、随机打乱数组元素

shuffle() 函数随机地对数组元素进行重新排序。关联数组中的键会丢失。

$a = array("a"=>"A","b"=>"B","c"=>"C","d"=>"D");shuffle($a);print_r($a); //Array ( [0] => C [1] => A [2] => B [3] => D ) 随机结果

3、对数组中的值求和

array_sum() 函数将对数组中的值加在一起求和并返回和。

$a = array(1,2,3,4,5,6,7,8);$sum = array_sum($a);echo $sum; //36

4、划分数组

array_chunk() 函数将数组划分为size大小的多维数组。

$a = array(1,2,3,4,5,6,7,8);$s = array_chunk($a,3);print_r($s); //Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) [2] => Array ( [0] => 7 [1] => 8 ) )

php数组分开_PHP学习之五:数组(三)合并、拆分、接合和分解数组相关推荐

  1. php数组分开_PHP 合并数组

    这里我们主要介绍的是array_merge()函数,也是我们在使用PHP合并数组的时候经常使用到的函数,其他的附加合并函数,我在这里也大概描述一下就行了,如果需要更加详细或者更多的函数,可以查看PHP ...

  2. 取二维数组最大值_学习Java,你必需要知道这些——Java数组

    目录 数组的概念 数组的创建 数组的引用 数组的创建 数组元素的初始化 数组的使用 使用数组 数组的复制 多维数组 数组的概念 数组由同一类型的对象或者基本数据组成,并封装在同一一个标识符(数组名称) ...

  3. 小陈谈JAVA(数组到底是怎样的,三分钟让你彻底认识数组)

    目录 前言 数组的表示方法 初始化数组 1.静态初始化 2.动态初始化 如何使用数组 1.访问数组 2.遍历数组 数组的内存分布 那么数组存在哪呢 结尾 前言 在经历了漫长的四个月的修炼,小陈终于结束 ...

  4. Vue源码学习 - 组件化(三) 合并配置

    Vue源码学习 - 组件化(三) 合并配置 合并配置 外部调用场景 组件场景 总结 学习内容和文章内容来自 黄轶老师 黄轶老师的慕课网视频教程地址:<Vue.js2.0 源码揭秘>. 黄轶 ...

  5. JavaScript如何合并数组对象中key相同的数据(把数组对象某个属性相同的对象合并成一个新的数组)

    let resData = [{"name": "住院医疗最高报销","tagName": "医疗","ins ...

  6. 【PHP学习】—数组的定义和遍历(三)

    [PHP学习]-数组的定义和遍历(三) 一.常见的数组定义方式 二.遍历数组 三.二维数组 四.数组传递给页面 数组转json格式(一维数组) 五.数组传递给页面 数组转json格式(二维数组)

  7. php2个数字拼接,PHP合并2个数字键数组值示例详解

    这篇文章主要介绍了PHP简单实现合并2个数字键数组值的方法,涉及php针对数组的遍历.判断.转换等相关操作技巧,需要的朋友可以参考下 本文实例讲述了PHP简单实现合并2个数字键数组值的方法.分享给大家 ...

  8. 【C语言进阶深度学习记录】三十 二维数组与二维指针

    文章目录 1 二维指针(指向指针的指针) 2 二维数组 3 二维数组的类型 3.2 如何动态申请二维数组 4 总结 1 二维指针(指向指针的指针) 指针的本质是变量 指针的指针是保存指针变量的地址.如 ...

  9. 一位高中竞赛蒟蒻的大学C++学习日记-第三篇-数组、字符、字符串

    数组.字符.字符串 前言 数组 什么是数组 如何定义一个数组 计算机如何储存数组 数组的使用 由一维向高维拓展 数组的初始化 字符.字符串 什么是字符,字符串 字符.字符串的输入与输出 关于格式转换符 ...

最新文章

  1. 【 FPGA 】FIR 滤波器的架构
  2. mysql dba系统学习(14)mysql用户管理之一、二
  3. spring 异常捕获异常_跟踪异常–第5部分–使用Spring进行计划
  4. spring框架的引入
  5. Ride to Office(信息学奥赛一本通-T1227)
  6. 首次亮相!法拉第未来公布FF 91内饰图:贾跃亭心血没白费
  7. vue商品列表滚动效果_vue+帧动画 实现 获奖奖品列表滚动循环展示
  8. 【hiho】127 后缀自动机一·基本概念 【后缀自动机】
  9. koa2 从入门到进阶之路 (五)
  10. [渝粤教育] 中国地质大学 国际贸易理论 复习题
  11. 惠普打印机136w硒鼓芯片怎么清零_HP惠普打印机清零技巧
  12. 2019美赛B题PSO算法
  13. Logback使用总结
  14. 蒟蒻的数据结构乱谈(未完)
  15. 群体智能的未来趋势:网络安全领域、网络安全相关领域及其拓展
  16. the inferior stopped because it triggered an exception
  17. 国产 Linux 操作系统面临的困境
  18. 【阅读笔记】《精力管理》吉姆洛尔 托尼施瓦兹
  19. CSS3中的animation属性实现无限循环的无缝滚动
  20. 智课雅思词汇---二十一、名词性后缀acity是什么意思

热门文章

  1. ROI Align 在 R-FCN 中的推广:PSROI-Align(附代码)
  2. FIFOQueue '_4_batch_processing/batch_join/fifo_queue' is closed and has insu
  3. linux信号处理编程实验报告,Linux编程之信号处理
  4. MYSQL中RAND子句的使用_mysql优化--rand()优化
  5. Android向上显示更多内容,如何在Android中为2个父项实现向上导航,指向1个子活动...
  6. mysql自带的监控报告_MYSQL监控-自带工具Query Profiler的使用
  7. python cookbook 豆瓣_备受好评的20本python图书,不用到处找了!
  8. springboot启动过程_不要搞笑哈,你用了5年的SpringBoot框架,竟然不了解它的启动过程?...
  9. mysql 5.5.修改库名_安全快速修改Mysql数据库名的5种方法
  10. select查询中@作用_SQL学习第四关:复杂查询