博客列表 >PHP 数组函数

PHP 数组函数

蔚蓝世纪
蔚蓝世纪原创
2020年05月07日 00:02:47829浏览

一、什么是数组?

  1. 数组是特殊的变量,它可以同时保存一个以上的值。数组能够在单一变量名中存储许多个值,并且我们能够通过引用索引号来访问某个值。
  2. PHP 中,array() 函数用于创建数组,其语法形式为:array();

二、数组的分类

在 PHP 中,有三种数组类型:

  1. 索引数组:带有数字索引的数组
  2. 关联数组:带有指定键的数组
  3. 多维数组:包含一个或多个数组的数组
代码举例:
  1. //这是一个索引数组
  2. $fruits = array ("apples","oranges","bananas","pears");
  3. printf('<pre>%s</pre>',print_r($fruits,true));
  4. echo '<hr>';
  5. //这是一个关联数组
  6. $student = array("class"=>"一一班","name" => "王二小", "age" => "7");
  7. printf('<pre>%s</pre>',print_r($student,true));
  8. echo '<hr>';
  9. //这是一个多维数组
  10. $city = array(
  11. '河南省' => array(
  12. '郑州市',
  13. '新郑市',
  14. '开封市',
  15. '洛阳市',
  16. '南阳市'=> array(
  17. '卧龙区',
  18. '宛城区',
  19. '高新区',
  20. '淅川县',
  21. ),
  22. ),
  23. '河北省' => array(
  24. '石家庄市',
  25. '唐山市',
  26. '秦皇岛市',
  27. '邯郸市',
  28. '邢台市',
  29. ),
  30. '陕西省' => array(
  31. '西安市',
  32. '宝鸡市',
  33. '咸阳市',
  34. '铜川市',
  35. '渭南市',
  36. ),
  37. );
  38. printf('<pre>%s</pre>',print_r($city,true));
效果展示:

三、十几常用数组函数

1.array_combine()函数

作用:通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值
语法:array_combine(keys,values);

代码举例:
  1. $name = array("赵一","钱二","孙三","王四");
  2. $number = array("11号","43号","25号","41号");
  3. $he = array_combine($name,$number);
  4. printf('<pre>%s</pre>',print_r($he,true));
效果展示:

2.array_fill()函数

作用:用键值填充数组
语法:array_fill(index,number,value);

代码举例:
  1. $a = array_fill(1,2,"王二小");
  2. printf('<pre>%s</pre>',print_r($a,true));
效果展示:

3.array_chunk()函数

作用:把数组分割为新的数组块。其中每个数组的单元数目由 size 参数决定。
语法:array_chunk(array,size,preserve_key);

代码举例:
  1. $name = array("赵一","钱二","孙三","王四");
  2. $number = array("11号","43号","25号","41号");
  3. $he = array_chunk($name,1);
  4. printf('<pre>%s</pre>',print_r($he,true));
  5. echo '<hr>';
  6. $name = array("赵一","钱二","孙三","王四");
  7. $number = array("11号","43号","25号","41号");
  8. $he = array_chunk($name,2);
  9. printf('<pre>%s</pre>',print_r($he,true));
  10. echo '<hr>';
  11. $name = array("赵一","钱二","孙三","王四");
  12. $number = array("11号","43号","25号","41号");
  13. $he = array_chunk($name,3);
  14. printf('<pre>%s</pre>',print_r($he,true));
  15. echo '<hr>';
  16. $name = array("赵一","钱二","孙三","王四");
  17. $number = array("11号","43号","25号","41号");
  18. $he = array_chunk($name,4);
  19. printf('<pre>%s</pre>',print_r($he,true));
####效果展示:



4.array_diff()函数

作用:比较两个数组的键值,并返回差集
语法:array_diff(array1,array2,array3…);

代码举例:
  1. $a = array("red" => "红色", "yellow" => "黄色", "blue" => "蓝色","pink" =>"粉色");
  2. $b = array("black" => "黑色", "white" => "白色", "blue" => "蓝色","green"=>"绿色");
  3. $c = array("red" => "红色", "blue" => "蓝色", "magenta" => "洋红色","gray" =>"灰色");
  4. // $result = array_diff($a,$b,$c);
  5. printf('<pre>%s</pre>',print_r(array_diff($a,$b,$c),true));
效果展示:其他数组都与第一数组进行比较,并且返回第一数组与其他 数组中不重复的值。

5.array_search()函数

作用:在数组中搜索某个键值,并返回对应的键名。
语法:array_search(value,array,strict);

代码举例:
  1. $a = array("red" => "红色", "yellow" => "黄色", "blue" => "蓝色","pink" =>"粉色");
  2. echo array_search("黄色",$a),'<br>';
  3. echo array_search("粉色",$a),'<br>';
  4. echo array_search("红色",$a),'<br>';
  5. echo array_search("蓝色",$a),'<br>';
效果展示:

6.array_sum()函数

作用:返回数组中所有值的和
语法:array_sum(arra)

代码举例:
  1. $a=array("苹果"=>"56","西瓜"=>"12","香蕉"=>"35");
  2. echo array_sum($a);
效果展示:

7.array_intersect()函数

作用:用于比较两个(或更多个)数组的键值,并返回交集。
语法:array_intersect(array1,array2,array3…);

代码举例:
  1. $a = array("red" => "红色", "yellow" => "黄色", "blue" => "蓝色","pink" =>"粉色");
  2. $b = array("black" => "黑色", "white" => "白色", "blue" => "蓝色","green"=>"绿色");
  3. $c = array("orange" => "橙色", "blue" => "蓝色", "magenta" => "洋红色","gray" =>"灰色");
  4. $result = array_intersect($a,$b,$c);
  5. print_r($result);
效果展示:

8.array_rand()函数

作用:返回数组中的随机键名,或者如果您规定函数返回不只一个键名,则返回包含随机键名的数组。
语法:array_rand(array,number);

代码举例:
  1. $family = array("father","mother","sister","brother");
  2. printf('<pre>%s</pre>',print_r($family,true));
  3. $family = array("father","mother","sister","brother");
  4. $rand = array_rand($family,2);
  5. echo $family[$rand[0]]."<br>";
  6. echo $family[$rand[1]]."<br>";
  7. echo $family[$rand[2]]."<br>";
  8. echo $family[$rand[3]]."<br>";
  9. echo $family[$rand[4]]."<br>";
效果展示:规定了随机返回2个数值,所以下面打印再多,也只是在数值中随机显示2个.

9.array_pop()函数

作用:删除数组中的最后一个元素
语法:array_pop(array);

代码举例:
  1. $a = array(1,3,5,7,9);
  2. print_r(array_pop($a));// 打印被删除的元素
  3. printf('<pre>%s</pre>',print_r($a,true));//打印处理之后的数组
效果展示:

10.array_flip()函数

作用:用于反转/交换数组中所有的键名以及它们关联的键值。
语法:array_flip(array);

代码举例:
  1. $color = array("red" => "红色", "yellow" => "黄色", "blue" => "蓝色","pink" =>"粉色");
  2. printf('<pre>%s</pre>',print_r($color,true));
  3. $color = array("red" => "红色", "yellow" => "黄色", "blue" => "蓝色","pink" =>"粉色");
  4. $result = array_flip($color);
  5. printf('<pre>%s</pre>',print_r($result,true));
效果展示:

四、四个数组回调函数

1.array_filter()函数

作用:用回调函数过滤数组中的元素。该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。
语法:array_filter(array,callbackfunction);

代码举例:
  1. function test($x)
  2. {
  3. return($x);
  4. }
  5. $a=array("a","b",7,3,16);
  6. print_r(array_filter($a,"test"));
  7. echo '<hr>';
  8. $arr = [50, 'color',['apple','pears','orange'], true, null, false, '', 0, '0'];
  9. $res = array_filter($arr,function($item){
  10. return $item;
  11. });
  12. printf('<pre>%s</pre><hr>', print_r($res, true));
效果展示:

2.array_map()函数

作用:array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
语法:array_map(myfunction,array1,array2,array3…);

代码举例:
  1. function myvalue($x,$y)
  2. {
  3. if ($x===$y)
  4. {
  5. return "same";
  6. }
  7. return "different";
  8. }
  9. $a=array("10","8","24");
  10. $b=array("5","8","24");
  11. $c=array("5","9","24");
  12. print_r(array_map("myvalue",$a,$b));
  13. echo '<br>';
  14. print_r(array_map("myvalue",$b,$c));
效果展示:

3.array_reduce()函数

作用:向用户自定义函数发送数组中的值,并返回一个字符串。
语法:array_reduce(array,myfunction,initial);

代码举例:
  1. function diy($x,$y)
  2. {
  3. return $x."---".$y;
  4. }
  5. $a=array("apple","bread","rice","pear");
  6. $b=array("china","henan","nanyang","wolong");
  7. print_r(array_reduce($a,"diy"));
  8. print_r(array_reduce($b,"diy"));
效果展示:

4.array_walk()函数

作用:对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。
语法:array_walk(array,myfunction,userdata…);

代码举例:
  1. function color($v,$k)
  2. {
  3. echo "The $k are $v .<br>";
  4. }
  5. $a=array("flowers"=>"red","trees"=>"green","cups"=>"blue");
  6. $res2=array_walk($a,"color");
  7. printf('<pre>%s</pre><hr>', print_r($res2,true));
效果展示:

五、array_slice()函数和array_splice()函数

1.array_slice()函数

作用:在数组中根据条件取出一段值,并返回
语法:array_slice(array,start,length,preserve);

代码举例:
  1. $family = array("father","mother","sister","brother");
  2. printf('<pre>%s</pre>',print_r(array_slice($family,0,2),true));
  3. printf('<pre>%s</pre>',print_r(array_slice($family,1,3),true));
效果展示:

2.array_splice()函数

作用:从数组中移除选定的元素,并用新元素取代它。
语法:array_splice(array,start,length,array)

代码举例:
  1. $a = array("red" => "红色", "yellow" => "黄色", "blue" => "蓝色","pink" =>"粉色");
  2. $b = array("灰色","洋红色", "黑色", "白色");
  3. array_splice($a,0,2,$b);
  4. printf('<pre>%s</pre>',print_r(array_splice($a,0,2,$b),true));
  5. array_splice($a,1,3,$b);
  6. printf('<pre>%s</pre>',print_r(array_splice($a,1,3,$b),true));
效果展示:

六、总结

1.数组函数与字符串函数可以对照学习,有些功能是类似的,也方便记忆。
2.数组函数因为要编写的代码相对比字符串多,易出错,要注意书写和符号,尤其要注意数组之间的嵌套关系。
3.array_slice()函数只是选取一段元素,而array_splice()函数会用新的元素替代选取的那段元素。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议