PHP数组的相关操作

栏目: PHP · 发布时间: 6年前

内容简介: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数组的相关操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

读屏时代

读屏时代

(美)Naomi S. Baron(内奥米·S.巴伦) / 庞洋 / 电子工业出版社 / 2016-7 / 55.00

书中作者探讨了技术如何重塑人们对阅读的定义。数字阅读越来越受欢迎,更便利、节约成本、并把免费书籍提供给全世界的读者。但是,作者也指出其弊处在于读者很容易被设备上的其他诱惑分心、经常走马观花而非深入阅读。更重要的是,人们阅读方式的变化会影响了作者的写作方式。为了迎合人们阅读习惯的转变,许多作家和出版商的作品越来越短小和碎片化,或者更青睐无需思考和细读的作品。作者比较了纸质阅读和在线阅读的重要性,包括......一起来看看 《读屏时代》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具