黑马程序员技术交流社区

标题: PHP数组函数一网打尽(合并,拆分,追加,查找,删除等) [打印本页]

作者: huawei    时间: 2016-12-17 22:13
标题: PHP数组函数一网打尽(合并,拆分,追加,查找,删除等)
本帖最后由 沈唁 于 2017-8-11 12:17 编辑

PHP数组函数一网打尽(合并,拆分,追加,查找,删除等)




1. 合并数组


array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。这个函数将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。其形式为:array array_merge (array array1 array2…,arrayN)  
案例如下:
2. 追加数组

array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。还有一个数组合并的形式,就是递归追加数组。其形式为:array array_merge_recursive(array array1,array array2[…,array arrayN])  

程序实例如下:



现在键 apple 指向一个数组,这个数组由两个颜色值组成的索引数组。

3. 连接数组

array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为:
array array_combine(array keys,array values)  
注意,两个输入数组必须大小相同,不能为空。示例如下



4. 拆分数组 array_slice()

array_slice()函数将返回数组中的一部分,从键offset开始,到offset+length位置结束。其形式:
array array_slice (array array, int offset[,int length])  

offset 为正值时,拆分将从距数组开头的offset 位置开始;如果offset 为负值,则拆分从距数组末尾的offset 位置开始。如果省略了可选参数length,则拆分将从offset 开始,一直到数组的最后一个元素。如果给出了length 且为正数,则会在距数组开头的offset+length 位置结束。相反,如果给出了length且为负数,则在距数组开头的count(input_array)-|length|位置结束。考虑一个例子:



5. 接合数组 array_splice()

array_splice()函数会删除数组中从offset开始到offset+length 结束的所有元素,并以数组的形式返回所删除的元素。其形式为:
array array_splice ( array array , int offset[,length[,array replacement]])   

offset 为正值时,则接合将从距数组开头的offset 位置开始,offset 为负值时,接合将从距数组末尾的offset 位置开始。如果忽略可选的length 参数,则从offset 位置开始到数组结束之间的所有元素都将被删除。如果给出了length 且为正值,则接合将在距数组开头的offset + leng th 位置结束。相反,如果给出了length且为负值,则结合将在距数组开头的count(input_array)-length的位置结束。实例如下:



从程序可以很清楚看到这个函数的使用方法了。

6. 数组的交集 array_intersect()

array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下:
array array_intersect(array array1,array array2[,arrayN…])  
下面这个例子将返回在$fruit1数组中出现的且在$fruit2和$fruit3中也出现的所有的水果:



只有在两个元素相等且具有相同的数据类型时,array_intersect()函数才会认为它们是相同的。

7. 关联数组的交集 array_intersect_assoc()

函数array_intersect_assoc()与array_intersect()基本相同,只不过他在比较中还考虑了数组的键。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值对才返回到结果数组中。
形式如下:array array_intersect_assoc(array array1,array array2[,arrayN…])  

下面的例子返回了出现在$fruit1数组中,也同时出现在$fruit2与$fruit3中的所有键/值对:



8. 数组的差集 array_diff()

函数array_diff()返回出现在第一个数组中但其他输入数组中没有的值。这个功能与array_intersect()相反。
array array_diff(array array1,array array2[,arrayN…])  
实例如下:



9. 关联数组的差集 array_diff_assoc()

函数array_diff_assoc()与array_diff()基本相同,只是它在比较时还考虑了数组的键。因此,只在第一个数组中出现而不再其他输入数组中出现的键/值对才会返回到结果数组中。其形式如下:
array array_diff_assoc(array array1,array array2[,arrayN…])  
下面的例子只返回了[yellow] => Banana,因为这个特殊的键/值对出现在$fruit1中,而在$fruit2和$fruit3中都不存在。



使用数组的过程中经常要遍历数组。通常需要遍历数组并获得各个键或值(或者同时获得键和值),所以毫不奇怪,PHP为此提供了一些函数来满足需求。许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移向下一个适当的位置。

10. 获取当前数组键 key()

key()函数返回input_array中当前指针所在位置的键。其形式如下:
mixed key(array array)  
下面的例子通过迭代处理数组并移动指针来输出$fruits数组的键:



注意,每次调用key()时不会移动指针。为此需要使用next()函数,这个函数的唯一作用就是完成推进指针的任务。

11. 获取当前数组值 current()

current()函数返回数组中当前指针所在位置的数组值。其形式如下:
mixed current(array array)  
下面修改前面的例子,这一次我们要获取数组值:


12. 获取当前数组键和值 each()

each()函数返回input_array的当前键/值对,并将指针推进一个位置。其形式如下:
array each(array array)  
返回的数组包含四个键,键0和key包含键名,而键1和value包含相应的数据。如果执行each()前指针位于数组末尾,则返回false。




查找、筛选与搜索数组元素是数组操作的一些常见功能。下面来介绍一下几个相关的函数。

13. in_array()函数

in_array()函数在一个数组汇总搜索一个特定值,如果找到这个值返回true,否则返回false。其形式如下:
boolean in_array(mixed needle,array haystack[,boolean strict]);  
来看下面的例子,查找变量apple是否已经在数组中,如果在,则输出一段信息:

$
14. array_key_exists()函数

如果在一个数组中找到一个指定的键,函数array_key_exists()返回true,否则返回false。其形式如下:
boolean array_key_exists(mixed key,array array);  下面的例子将在数组键中搜索apple,如果找到,将输出这个水果的颜色:



15. array_search()函数

array_search()函数在一个数组中搜索一个指定的值,如果找到则返回相应的键,否则返回false。其形式如下:
mixed array_search(mixed needle,array haystack[,boolean strict])  
下面的例子在$fruits中搜索一个特定的日期(December 7),如果找到,则返回相应州的有关信息:



16. array_keys()函数

array_keys()函数返回一个数组,其中包含所搜索数组中找到的所有键。其形式如下:
array array_keys(array array[,mixed search_value])  
如果包含可选参数search_value,则只会返回与该值匹配的键。下面的例子将输出$fruit数组中找到的所有数组:



17. array_values()函数

array_values()函数返回一个数组中的所有值,并自动为返回的数组提供数值索引。其形式如下:
array array_values(array array)  
下面的例子将获取$fruits中找到的各元素的值:



有时候我们需要扩展一个数组,或者删掉数组的一部分,PHP为扩展和缩小数组提供了一些函数。对于那些希望模仿各种队列实现(FIFO、LIFO)的程序员来说,这些函数可以提供便利。顾名思义,从这些函数的函数名(push、pop、shift和unshift)就清楚地反映出其作用。PS:传统的队列是一种数据结构,删除元素与加入元素的顺序相同,就称为先进先出,或FIFO。相反,栈是另外一种数据结构,其中删除元素的顺序与加入时的顺序相反,这成为后进先出,或LIFO。

18. 在数组头添加元素

array_unshift()函数在数组头添加元素。所有己有的数值键都会相应地修改,以反映其在数组中的新位置,但是关联键不受影响。其形式如下:
int array_unshift(array array,mixed variable[,mixed variable])  
下面这个例子在$fruits数组前面添加了两种水果:


19. 在数组尾添加元素

array_push()函数的返回值是int型,是压入数据后数组中元素的个数,可以为此函数传递多个变量作为参数,同时向数组压入多个变量。其形式为:
(array array,mixed variable [,mixed variable...])  
下面这个例子在$fruits数组中又添加了两个水果:


20. 从数组头删除值

array_shift()函数删除并返回数组中找到的元素。其结果是,如果使用的是数值健,则所有相应的值都会下移,而使用关联键的数组不受影响。其形式为
mixed array_shift(array array)  下面的例子删除了$fruits数组中的第一个元素apple:



21. 从数组尾删除元素

array_pop()函数删除并返回数组的最后一个元素。其形式为:
mixed array_pop(aray target_array);  
下面的例子从$states数组删除了最后的一个州:





作者: xw1985520    时间: 2016-12-18 00:48
WDQWWWWWWWWWWWWWWWWWWWWWWWWW
作者: sopy_924    时间: 2016-12-18 10:43
很好的一文!
作者: 爺霸青楼    时间: 2016-12-18 23:51
lalalallalalalalallalalalalla
作者: 肖肖肖    时间: 2016-12-19 00:08
谢谢分享!!!
作者: qq274805539    时间: 2016-12-19 08:55
楼主很赞


作者: linsiyuan    时间: 2016-12-19 17:28
好多回复啊,,,
作者: 休斯敦火箭    时间: 2016-12-19 18:33
看看 非常谢谢!
作者: 290422624    时间: 2016-12-20 14:44
跟着大神打天下

作者: 红叶1985    时间: 2016-12-20 16:04
爱迪生所所所所所所所所所所所所所
作者: guoguo8848    时间: 2016-12-21 08:14
看看 非常谢谢!
作者: chen521    时间: 2016-12-21 08:48
资料很不错!顶!d=====( ̄▽ ̄*)b一下
作者: Glee_ChaN    时间: 2016-12-21 10:48
good,谢谢
作者: heim123    时间: 2016-12-21 10:56
学习学习学习学习学习学习学习
作者: jun-23    时间: 2016-12-21 10:57
  什么鬼,刚注册还要5分钟才发言
作者: heim123    时间: 2016-12-21 10:58
收拾收拾收拾收拾收拾收拾收拾
作者: wh121    时间: 2016-12-21 15:36
进来学习看看
作者: 小白php    时间: 2016-12-22 10:20
感谢整理,可以好好看看了。
作者: thinkJUN    时间: 2016-12-22 12:48
感谢分享!赞赞赞赞赞赞
作者: 元方    时间: 2016-12-22 19:14
一个一个来
作者: creep_gao    时间: 2016-12-22 19:21
123sdasljdlfjdlsjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
作者: bill020    时间: 2016-12-22 22:22
have a look
作者: 踏上PHP征程    时间: 2016-12-22 22:30
学一下,多谢分享,嘻嘻嘻
作者: harman    时间: 2016-12-23 09:36
很好的一文!
作者: 六点二十二    时间: 2016-12-23 09:50
特别有用!!!!!!!!!!!!!!!!!
作者: 六点二十二    时间: 2016-12-23 09:52
特别有用!!!!!!!!!!!!!!!!!非常好!!!
作者: dengdai2016    时间: 2016-12-23 10:34
学习学习
作者: Hugo_alex    时间: 2016-12-23 11:24
多谢老师分享
作者: fanphp    时间: 2016-12-23 17:08
谢谢楼主分享
作者: a595359652    时间: 2016-12-23 19:56

楼主很赞
作者: xieyouhui    时间: 2016-12-24 14:06
谢谢额啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: lcy1069    时间: 2016-12-29 16:00
好,学习~~~~~~~~····
作者: Enzo_    时间: 2016-12-29 16:45
哈哈哈哈哈哈哈哈哈哈哈哈
作者: jc千百度    时间: 2017-1-2 20:00
66666666666666666
作者: VC丶万人敬仰    时间: 2017-1-3 17:23
66666666666666666
作者: hank8826    时间: 2017-1-4 09:49
好看好看好看
作者: 打小我就行    时间: 2017-1-6 10:40
eneneneneneneenen
作者: xxiaogongchang    时间: 2017-1-6 20:46
数组的处理!!!!!
作者: kaishui    时间: 2017-1-7 00:40
兔兔兔兔兔兔兔兔兔兔
作者: skykiah    时间: 2017-1-7 17:51
看看 非常谢谢!
作者: supperdiyer    时间: 2017-1-7 22:31

感谢分享!赞赞赞赞赞赞
作者: 问题先生    时间: 2017-1-15 21:17
学习PHP中
作者: xiami23king    时间: 2017-1-17 10:28
66666666666666666666666666
作者: 1317181388    时间: 2017-2-3 01:21
感谢楼主分享
作者: 嘎啦儿    时间: 2017-2-9 15:53
沙发,查看答案
作者: onlineuser    时间: 2017-2-9 16:29
数组不要太实用啊!!!
作者: 哈哈哈哈哈11    时间: 2017-2-9 21:42
哈哈哈哈哈哈哈哈哈哈哈哈
作者: fjdaslfjk    时间: 2017-2-16 11:39
PHP数组函数一网打尽(合并,拆分,追加,查找,删除等)
作者: Cai小神    时间: 2017-2-23 17:23
一网打尽
作者: shinehow    时间: 2017-2-24 08:55
lllllllllllllll
作者: devil_joker@qq.    时间: 2017-2-27 10:06
666666666666666666
作者: 语然    时间: 2017-2-28 17:22
可以看下具体代码实例么

作者: dayday语笑嫣然    时间: 2017-2-28 17:39
可以查看下代码示例吗
作者: dayday语笑嫣然    时间: 2017-2-28 17:41
学习代码
作者: Overflow    时间: 2017-3-13 15:16
11111111111111111111111
作者: mvpicy    时间: 2017-3-17 20:23
学习学习
作者: 179942174    时间: 2017-3-18 22:56
收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾收拾是是是
作者: 邢航    时间: 2017-4-5 08:59
学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习
作者: a5854365    时间: 2017-4-11 17:13
6666666666666666
作者: a5854365    时间: 2017-4-11 17:14
6666666666666666
作者: —码农—    时间: 2017-4-11 17:15
        tp        tp1z1z
作者: vonphp    时间: 2017-4-19 06:49
RE: PHP数组函数一网打尽(合并,拆分,追加,查找,删除等) [修改]
RE: PHP数组函数一网打尽(合并,拆分,追加,查找,删除等) [修改]
RE: PHP数组函数一网打尽(合并,拆分,追加,查找,删除等) [修改]
RE: PHP数组函数一网打尽(合并,拆分,追加,查找,删除等) [修改]

作者: xie~    时间: 2017-4-23 19:52
看看~~~~~~

作者: 剑客星辰    时间: 2017-4-30 11:19
444444444444444444444
作者: 咿呀咿呀哟    时间: 2017-5-2 14:11
感谢分享!~~
作者: worldtongf    时间: 2017-5-20 23:11
PHP小白必知: web服务器该选择apache还是nginx?
作者: 瞬间回忆    时间: 2017-5-24 16:28
PHP数组函数一网打尽(合并,拆分,追加,查找,删除等)
作者: dongfengyuli    时间: 2017-5-29 11:31
总结的好,非常好
作者: a19911126123    时间: 2017-6-15 08:26
6666666666777

作者: wtx    时间: 2017-7-25 22:26
赞,赞,赞!!大爱黑马!多谢多谢!
作者: yzwljlb    时间: 2017-7-27 08:08
看一看,学一学,顶一顶
作者: pykpyk    时间: 2017-8-8 22:04
666666666666666666
作者: pykpyk    时间: 2017-8-8 22:05
6666666666666666666
作者: yklyh199243    时间: 2017-8-10 10:08
很需要,谢谢分享
作者: 清风月颜    时间: 2017-8-26 09:10
真是挺好使啊
作者: as8867549    时间: 2017-8-26 16:15
不错!!!!!!
作者: iamyhf    时间: 2017-8-28 06:05
回复查看详情
作者: 门徒13    时间: 2017-9-4 17:00
看看 一下
作者: Hi~    时间: 2017-9-6 19:40
学习一下
作者: yuanlinjiayou    时间: 2017-9-9 12:01
111111111111
作者: rules    时间: 2017-9-11 17:56
1111111111
作者: heartjack    时间: 2017-9-19 16:26
1111111111111111
作者: qmmdyw    时间: 2017-11-7 14:54

谢谢分享
作者: webliyang    时间: 2017-11-27 18:30
现在键 apple 指向一个数组,这个数组由两个颜色值组成的索引数组。
作者: 123456789987456    时间: 2018-2-28 17:36
好好学习
作者: 如果明日来临    时间: 2018-6-4 18:16
66666666666666666
作者: flyshandian    时间: 2018-8-30 11:52
谢谢分享
作者: uuuqqq    时间: 2018-10-7 06:47
谢谢楼主的无私奉献!!!!!!

作者: Sunsines    时间: 2018-12-18 22:51
学无止境
作者: bug刘    时间: 2019-1-7 14:16
学习学习
作者: frmsceg    时间: 2019-4-1 10:36
谢谢分享
作者: wyywn1314    时间: 2020-4-12 22:33
6666666666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2