数组函数《拆分、合并、分解和接合》

本节介绍的数组处理函数能够完成一些更复杂的数组处理任务,可以把数组作为一个集合处理。例如,对两个货多个数组进行合并,计算数组间的差集或交集,从数组元素中提取一部分,以及完成数组的比较。

①函数array_slice()

array_slice()函数的作用是在数组中根据条件取出一段值并返回。如果数组有字符串键,所返回的数组将保留键名。该函数可以设置4个参数,其函数的原型如下:

array array_slice(array array , int offset [,int length[,bool preserver_keys]])

第一个参数array是必选项,调用时输入要处理的数组。第二个参数offset也是必须的参数,需要传入一个数值,规定取出元素的开始位置。如果是正数,则从前往后开始取,如果是负值,从后向前取offset绝对数目的元素。第三个参数是可选的,也需要传入一个数值,规定被返回数组的长度,如果是负数则从后向前,选取该值绝对数目的元素。如果未设置该值,则返回所有元素。第四个参数也是可选的,需要一个布莱尔类型的值,如果未TRUE值则所返回的数组将保留键名。设置为FALSE值,也是默认值将重新设置索引键值。这里需要注意的是,如果数组有字符串键,所返回的数组将保留键名。函数array_slice()使用的代码如下所示:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<?php

$lamp=array("Linux", "Apache", "MySQL", "PHP");

    //使用array_slice()从第二个开始取(0是第一个,1是第二个),取两个元素从数组$lamp中返回

    print_r(array_slice($lamp, 1,2));       //输出Array([0]=>Apache [1]=>MySQL)

    //第二个参数使用负数-2,从和面第二个开始取,返回一个元素

    print_r(array_slice($lamp, -2,1));        //输出Array([0]=>MySQL)

    //最后一个参数设置为true,保留原有的键值返回

    print_r(array_slice($lamp, 1,2, true));      //输出Array([1]=Apache  [2]=>MySQL)

$lamp=array("a"=>"Linux", "b"=>"Apache", "c"=>"MySQL", "d"=>"PHP");

    //如果数组中有字符串键,默认返回的数组将保留键名

    print_r(array_slice($lamp, 1,2));       //输出Array([b]=>Apache [c]=>MySQL)

?>

②函数array_splice()

array_splice()函数与array_slice()函数类似,选择数组中的一系列元素,但不返回,而是删除它们并用其他值代替。如果提供了第四个参数,则之前选中的那些元素将备第四个参数指定的数组取代。最后生成的数组将会返回。其函数原型如下:

array array_splice(array &input, int offset [,int length[,array replacement]])

第一个参数array为必选项,规定要处理的数组。第二个参数offset也是必选项,调用时传入数值。如果offset为正数,则从输入数组中该值指定的偏移量开始移除。如果offset为负,则从输入数组末尾倒数该值指定的偏移量开始移除。第三个参数length是可选的,也需要一个数值,如果省略该参数,则移除数组中从offset到结尾的所有部分。如果指定了length并且为正值,则移除这么多元素。如果指定了length且为负值,则移除从offset到数组末尾倒数length为止中间所有的元素。第四个参数array也是可选的,被移除的元素由此数组中的元素替代。如果没有移除任何值,则此数组中的元素将插入到指定位置。函数array_splice()使用的代码如下所示:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?php

    $input = array("Linux", "Apache", "MySQL", "PHP");

    //原数组中的第二个元素后到数组结尾都被删除

    array_splice($input,2);

    print_r($input);         //输出Array([0]=>Linux [1]=>Apache)

    $input = array("Linux", "Apache", "MySQL", "PHP");

    //从第二个元素开始移除直到数组末尾倒数第一个为止中间所有的元素

    array_splice($input,1,-1);

    print_r($input)          //输出Array([0]=>Linux [1]=>php)

    $input = array("Linux", "Apache", "MySQL", "PHP");

    //从第二个元素到数组结尾都被第四个参数替代

    array_splice($input,1,count($input),"web");

    print_r($input)          //输出Array([0]=>Linux [1]=>web)

    $input = array("Linux", "Apache", "MySQL", "PHP");

    //最后一个元素被第四个参数数组替代

    array_splice($input,-1,1,array("web","www"));

    print_r($input)          //输出Array([0]=>Linux [1]=>web [2]=>MySQL [3]=>web [4]=>www)

?>

③函数array_combine()

array_comblie()函数的作用是通过合并两个数组来创建一个新数组。其中一个数组是键名,另一个数组的值为键值。如果其中一个数组为空,或者两个数组的元素个数不同,则函数返回false。其函数原型如下:

array array_combine(array keys, array values)

该函数有两个参数且都是必选项,两个参数必须有相同数目的元素。函数array_combine()使用的代码如下所示:


1

2

3

4

5

6

7

<?php

    $a1 = array("OS","WebServer","DataBase","Language");     //声明第一个数组作为参数1

    $a2 = array("Linux","Apache","MySQL","PHP")              //声明第二个数组作为参数2

    print_r(array_combine($a1,$a2));                         //使用array_combine()将两个数组合并

    //输出Array([OS]=>Linux [WebServer]=>Apache [DataBase]=>MySQL [Language]=>PHP)

?>

④函数array_merge()

array_merge()函数的作用是把一个或多个数组合并为一个数组。如果键名有重复,该键的值最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。这里要注意如果仅仅向array_merge()函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以0开始进行重新索引。其函数的原型如下:

array array_merge(array array1[,array array2 [,array...]])

该函数第一个参数是必选项,需要传入一个数组。可以有多个可选参数,但必须都是数组类型的数据。返回将多个数组合并后的新数组。函数array_merge()使用的代码如下所示》:


1

2

3

4

5

6

7

8

9

10

<?php

    $a1 = array("a"=>"Linux","b"=>"Apache");

    $a2 = array("c"=>"MySQL","b"=>"PHP");

    print_r(array_merge($a1,$a2));        //输出array([a]=>Linux [b]=>php [c]=>MySQL)

    //仅使用一个数组参数则键名以0开始进行重新索引

    $a = array(3=>"php",4=>"MySQL");

    print_r(array_merge($a));             //输出array([0]=>PHP [1]=>MySQL)

?>

⑤函数array_intersect()

array_intersect()函数的作用是计算数组的交集。返回的结果数组中包含了所有在被比较数组中,也同时出现在所有其他参数数组中的值,键名保留不变,仅有值用于比较。其函数的原型如下:

array array_intersect(array array1, array array2 [,array...])

该函数第一个参数是必选项,与其他数组进行比较的第一个数组。第二个参数也是必选项,与第一个数组进行比较的数组。可以有多个可选参数作为以后的参数,与第一个数组进行比较的数组。函数array_intersect()使用的代码如下所示:


1

2

3

4

5

6

<?php

    $a1 = array("Linux", "Apache", "MySQL", "PHP");

    $a2 = array("Linux", "Tomcat", "MySQL", "JSP");

    print_r(array_intersect($a1,$a2));        //输出array([0]=>Linux [2]=>MySQL)

?>

⑥函数array_diff()

array_diff()函数的作用是返回两个数组的差集数组(值不相同的元素)。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的元素值。在返回的数组中,键名保持不变。其函数的原型如下:

array array_diff(array array1, array array2 [,array...])

第一个参数是必选项,传入与其他数组进行比较的数组。第二个参数也是必选项,传入与第一个数组进行比较的数组。第三个参数以后都是可选项,可用一个或任意多个数组与第一个数组进行比较。本函数仅有值用于比较。函数array_diff()使用的代码如下所示:


1

2

3

4

5

6

<?php

    $a1 = array("Linux", "Apache", "MySQL", "PHP");

    $a2 = array("Linux", "Tomcat", "MySQL", "JSP");

    print_r(array_diff($a1,$a2));        //输出array([1]=>Apache [3]=>PHP)

?>

在上例中,使用array_diff()函数进行两个数组比较时,把在第一个数组中存在且第二个数组中没有的元素返回。

>> 本文固定链接: http://php.ncong.com/php_course/arry_function/chaifei_hebing_fenjie_jiehe.html

>> 转载请注明: 恩聪php 2014年04月14日 于 恩聪PHP学习教程 发表

数组函数《拆分、合并、分解和接合》

时间: 2024-10-10 23:24:40

数组函数《拆分、合并、分解和接合》的相关文章

PHP常用数组函数2

数组的排序函数 根据ASCII编码进行排序 ? 会一个一个比较字符的ASCII编码进行排序,比如按从升序(从小到大)排,10会排在2前面,因为计算机认识''10''是两个字符,"1"和"0",而他们的ASCII编码都比2小,所以10会排在2前面. sort(),对数组排序(升序),直接改变原数组,成功返true. rsort(),对数组逆向排序(降序),直接改变原数组,成功返true. sort()和rsort()的升降序只针对数组的键值,且不会保留原来的索引,关联

数组合并函数,二维数组相同字段合并到一起。

一般从数据库中提取数据时,会遇到各种各样类型的数据,要求也不尽相同.自己这两天开发的时候遇到一个很纠结的问题,如下: 比如一个二维数组是这样的: Array ( [0] => Array ( [uid] => 231 [username] => 123456 [active] =>aaaa [transfer] =>1111 ) [1] => Array ( [uid] => 231 [username] =>123456 [active] => bb

php将两个或多个数组合并为一个数组函数

array_merge() 函数把两个或多个数组合并为一个数组. 例子 1 <?php $a1=array("a"=>"Horse","b"=>"Dog"); $a2=array("c"=>"Cow","b"=>"Cat"); print_r(array_merge($a1,$a2)); ?> 输出: Array

PHP数组函数总结

一.新建数组 数组没有大小限制,所以只需建立引用就可以创建数组,例如: $state[0]= '111'; $state[1]= '222'; 如果索引值是数值索引而且是递增的,还可以在创建时省略索引值. $state[] ='111'; $state[] ='222'; 可以使用array()创建数组,如: $state =array('111', '222'); $state =array('one'=>'111', 'two'=>'222'); 使用list()提取数组,例如: $sta

PHP知识点(1) - 数组函数

数组内指针 -current() -key() -prev() -next() -reset() -end() 预定义数组 $_SERVER() $_ENV() $_REQUEST() $_GET() $_POST() $_FILES $_SESSION() $_COOKIE() $GLOBALS() 数组的键/值处理相关函数 array  array_keys($array[, search_value[ , bool]])    指定第一个参数表示返回数组的所有键值,指定第二个参数,只返回该

PHP关于数组函数总结

学习PHP的数组总结 PHP有很多关于数组的函数,方便数组操作. 定义: 数组每个实体包含两个项:key和value,可以通过查询键来获取其相应的值.这些键可以是数值(numerical)键或关联(associative)键.数值键与值没有真正的联系,它们只是值在数组中的位置. PHP提供了很多遍历数组的方法,无法使用关联键还是数值键,都依赖于一种称为数组指针的特性. 创建数组 PHP不需要在创建数组时指定其大小,因为PHP是一种松散的语言,所以不需要在使用数组前先行声明.尽管没有限制,PHP仍

PHP数组函数基础知识

什么是数组?数组就是被命名的用来存储一系列数值的地方.数组array是非常重要的数据类型.相对于其他的数据类型,它更像是一种结构,而这种结果构可以存储一系列数值.数组能够在单一变量名中存储许多值,并且能够通过引用下标号来访问某个值. 在 PHP 中,有三种数组类型: 索引数组 - 带有数字索引的数组 关联数组 - 带有指定键的数组 多维数组 - 包含一个或多个数组的数组 创建数组 array(key => value) 创建索引数组 使用array()函数声明数组.PHP属于弱类型语言相对较灵活

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScript使用push方法添加一个元素到数组末 JavaScript数组函数unshift、shift、pop、push使用

push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( item1 [,items... ] )参数 参数 描述item1 任意类型添加到当前数组末尾处的元素.items 可选参数/任意类型要添加到当前数组末尾处的其他项,可以有多个.注意:如果添加的元素类型为数组类型(Array),仍然会被当作一个元素看待,只是这个元素是数组类型而已.如果要合并两个数组,请使

数组函数

2016年11月22号 今天苦逼的学习了"几个"数组函数.不多也就30几个! 首先学习了 数组的指针:在每一个数组的内部,都有一个数组元素的指针,该指针负责指向数组内的某个元素,那么这个被指向的元素,就叫作"当前元素"!而他又有两个小弟,分别实现键和值:key:语法:key(数组名)作用:获取该数组当前元素的键!current:语法:current(数组名)作用:获取该数组当前元素的值! 然而,数组的指针不能永远只指向某个元素,应该将数组的指针在需要的时候下移一位!