内容简介:PHP数组的相关操作
-
创建数组
索引数组
索引为整数,如果没有指定索引值则默认为零,依次递增。
//索引数组 $array1 = array('a', 'b', 'c', 'd');
关联数组
数组的key为字符串。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
多维数组
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
复合数组
//二维复合数组 $ret = array( 'id' => 2, 'name' => '算法', 'children' => array( array('id' => 5, 'name' => 'QUERY处理'), array('id' => 6, 'name' => 'URL处理'), array('id' => 7, 'name' => '内容处理'), array('id' => 8, 'name' => '统计计算'), ), );
range函数创建索引数组
该函数创建一个数组,包含从low到high(包含low和high)之间的整数或字符。如果high比low小,则返回反序的数组。
range(low,high,step) $array = range(0,5);//0,1,2,3,4,5 $array = range(0,50,10);//0,10,20,30,40,50 $array = range("a","d");//a,b,c,d
-
遍历数组
for循环遍历索引数组
$arr = array(1, 2, 3, 4); for ($i = 0; $i < count($arr); $i++) { echo $arr[$i];//1234 };
foreach循环遍历数组
$arr = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, ); foreach ($arr as $key => $value) { var_dump($key . '=>' . $value);//a=>1b=>2c=>3d=>4 }
each函数遍历数组
each() 函数返回当前元素的键名和键值,并将内部指针向前移动,该元素的键名和键值会被返回带有四个元素的数组中。两个元素(1 和 Value)包含键值,两个元素(0 和 Key)包含键名。如果内部指针越过了数组范围,函数将返回 FALSE。
$sports = array('ball' => 'good', 'swim' => 'well', 'run' => 'bad'); while ($elem = each($sports)) { echo $elem[0] . ': ' . $elem[1];//ball: goodswim:wellrun: bad echo $elem['key'] . ': ' . $elem['value'];//ball: goodswim:wellrun: bad }
list()搭配each遍历数组
像 array() 一样,list不是真正的函数,而是语言结构。list()用一步操作给一组变量进行赋值。
$sports = array('ball' => 'good', 'swim' => 'well', 'run' => 'bad'); for (; list($key, $value) = each($sports);) { echo $key . ': ' . $value;//ball: goodswim:wellrun: bad }
-
数组添加元素
赋值添加
直接对数组变量赋值$arr[key] = value。
$arr['a'] = 1; var_dump($arr);//'a'=>1
中括号[]形式添加
如果方括号中没有指定索引值,则取当前最大整数索引值,新的键名将是该值加1。如果当前还没有整数索引,则键名将为0。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
0
使用array_push()函数
array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。该函数等于多次调用 $array[] = $value。
注释:即使数组中有字符串键名,您添加的元素也始终是数字键。
注释:如果用 array_push() 来给数组增加一个单元,还不如用 $array[] =,因为这样没有调用函数的额外负担。
注释:如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
1
使用array_unshift()函数在数组开头添加元素
array_unshift() 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样。该函数会返回数组中元素的个数。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
2
-
数组删除元素
使用unset()函数
销毁指定的变量。
该函数允许取消一个数组中的键名,要注意数组将不会重建索引,如需重新索引,可以使用array_values()函数。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
3
使用array_splice()函数
array_splice() 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。
array array_splice ( array &$input , int $offset [, int $length [, array $ replacement ]] )
array_splice() 把 input 数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用 replacement 数组中的单元取代。返回一个包含有被移除单元的数组。注意 input 中的数字键名不被保留。如果 offset 为正,则从 input 数组中该值指定的偏移量开始移除。如果 offset 为负,则从 input 末尾倒数该值指定的偏移量开始移除。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
4
如果省略 length,则移除数组中从 offset 到结尾的所有部分。如果指定了 length 并且为正值,则移除这么多单元。如果指定了 length 并且为负值,则移除从 offset 到数组末尾倒数 length 为止中间所有的单元。小窍门:当给出了 replacement 时要移除从 offset 到数组末尾所有单元时,用 count($input) 作为 length。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
5
如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代。如果 offset 和 length 的组合结果是不会移除任何值,则 replacement 数组中的单元将被插入到 offset 指定的位置。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
6
array_pop()删除数组最后一个元素
返回数组的最后一个值。如果数组是空的,或者非数组,将返回 NULL。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
7
array_shift()删除数组第一个元素
array_shift() 函数删除数组中第一个元素,并返回被删除元素的值。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
8
如果键名是数字的,所有元素都会获得新的键名,从 0 开始,并以 1 递增。
//关联数组 $arr2 = array( "a" => 1, "b" => 2, "c" => 3, "d" => 4, );
9
-
数组修改元素
利用key值修改
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
0
-
数组排序
sort()函数对数组进行升序排序
按照字母升序对数组中的元素进行排序
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
1
按照字母降序对数组中的元素进行排序
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
2
rsort()函数对数组进行降序排序
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
3
asort()函数根据值对数组排序
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
4
ksort()函数利用键对数组排序
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
5
arsort()函数对值进行逆序排序
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
6
krsort()函数对键进行逆序排序
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
7
array_multisort()函数进行多维数组排序
array_multisort()可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。参数中的数组被当成一个表的列并以行来进行排序,这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要 排序 的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
8
-
数组其他常见的操作
array_keys()函数获取数组key合集
array_keys() 函数返回包含数组中所有键名的一个新数组。
//二维数组 $cars = array ( array("Volvo", 22, 18), array("BMW", 15, 13), array("Saab", 5, 2), array("Land Rover", 17, 15), );
9
array_values()获取数组值合集
array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。
//二维复合数组 $ret = array( 'id' => 2, 'name' => '算法', 'children' => array( array('id' => 5, 'name' => 'QUERY处理'), array('id' => 6, 'name' => 'URL处理'), array('id' => 7, 'name' => '内容处理'), array('id' => 8, 'name' => '统计计算'), ), );
0
array_unique()函数删除重复元素
array_unique() 函数移除数组中的重复的值,并返回结果数组。当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。返回的数组中键名不变。
//二维复合数组 $ret = array( 'id' => 2, 'name' => '算法', 'children' => array( array('id' => 5, 'name' => 'QUERY处理'), array('id' => 6, 'name' => 'URL处理'), array('id' => 7, 'name' => '内容处理'), array('id' => 8, 'name' => '统计计算'), ), );
1
array_merge()合并数组
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
//二维复合数组 $ret = array( 'id' => 2, 'name' => '算法', 'children' => array( array('id' => 5, 'name' => 'QUERY处理'), array('id' => 6, 'name' => 'URL处理'), array('id' => 7, 'name' => '内容处理'), array('id' => 8, 'name' => '统计计算'), ), );
2
array_slice()截取数组片段
start,开始位置。0=第一个元素。
preserve,可选。规定函数保留键名还是重置键名。true、false
array_slice(array,start,length,preserve)
//二维复合数组 $ret = array( 'id' => 2, 'name' => '算法', 'children' => array( array('id' => 5, 'name' => 'QUERY处理'), array('id' => 6, 'name' => 'URL处理'), array('id' => 7, 'name' => '内容处理'), array('id' => 8, 'name' => '统计计算'), ), );
3
未完,待补充……
以上所述就是小编给大家介绍的《PHP数组的相关操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- ES6数组方法使用心得以及一些数组操作整理
- JS骚操作之数组快速排序
- 平时工作时一些数组常用方法,以及操作总结
- php数组的21个操作合并,拆分,删除,排序…
- es6新增数组方法简便了哪些操作?
- 链表!比数组更适合做增删操作的数据结构
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First Python
Paul Barry / O'Reilly Media / 2010-11-30 / USD 49.99
Are you keen to add Python to your programming skills? Learn quickly and have some fun at the same time with Head First Python. This book takes you beyond typical how-to manuals with engaging images, ......一起来看看 《Head First Python》 这本书的介绍吧!