博客列表 >php基础知识数组的遍历与数组函数

php基础知识数组的遍历与数组函数

῀℡῀ᵒᵐᵍᵎᵎᵎ
῀℡῀ᵒᵐᵍᵎᵎᵎ原创
2020年04月26日 20:18:19665浏览

php基础知识数组的遍历与数组函数


1.数组的遍历

1.1代码演示

  1. <?php
  2. //1.索引数组的遍历
  3. $users = [0=>1, 1=>'张三', 2=>'男', 3=>'小学学php', 4=>18];
  4. printf('<pre>%s</pre>', print_r($users, true));
  5. //重零开始递增的正整数,键名可以省略
  6. $users = [1, '张三', '男', '小学学php', 18];
  7. printf('<pre>%s</pre>', print_r($users, true));
  8. //键名可以不连续,可以是负数,还可以是小数
  9. $city = ['重庆', 3=>'北京', '天津', -3=>'上海'];
  10. printf('<pre>%s</pre>', print_r($city, true));
  11. echo '<hr>';
  12. //2.关联数组的遍历
  13. //健名使用非数字的字符串来表示
  14. //如果用数字来表示键的话,索引数组也是关联数组
  15. $users = ['id'=>'1', 'name'=>'张三', 'sex'=>'男', 'education'=>'小学学php', 'age'=>18];
  16. printf('<pre>%s</pre>', print_r($users, true));
  17. // 所以可以认为索引数组是关联数组的子集
  18. $users = [0=>1, 'name'=>'张三', 2=>'男', 'education'=>'小学学php', 18];
  19. printf('<pre>%s</pre>', print_r($users, true));
  20. // 3.数组的定义和访问
  21. //原始创建数组的方法
  22. $user = array('2', '李四', '20', '19299829@php.cn');
  23. $user1 = array('id'=>'2', 'name'=>'李四', 'age'=>'20', 'email'=>'19299829@php.cn');
  24. printf('<pre>%s</pre>', print_r($user, true));
  25. //现在定义数字建议用下面这种
  26. $user2 = ['2', '李四', '20', '19299829@php.cn'];
  27. $user3 = ['id'=>'2', 'name'=>'李四', 'age'=>'20', 'email'=>'19299829@php.cn'];
  28. printf('<pre>%s</pre>', print_r($user3, true));
  29. // 一个一个创建数组里面的成员
  30. //也叫赋值的方法来创建
  31. //关联数组
  32. $user4['id'] = '3';
  33. $user4['name'] = '王麻子';
  34. $user4['age'] = '5';
  35. $user4['email'] = '1111@php.cn';
  36. printf('<pre>%s</pre>', print_r($user4, true));
  37. echo '<hr>';
  38. //索引数组
  39. $user4[] = '3';
  40. $user4[] = '王麻子';
  41. $user4[] = '5';
  42. $user4[] = '1111@php.cn';
  43. printf('<pre>%s</pre>', print_r($user4, true));
  44. echo '<hr>';
  45. //数组成员的访问方式
  46. //索引数组
  47. echo "$user4[1]的邮箱是:{$user4[3]}<br>";
  48. //关联数组
  49. echo "{$user4['name']} 的邮箱是:{$user4['email']}";
  50. echo '<hr>';
  51. //数组成员的类型,类型不受限制
  52. $email = '1988838@php.cn';
  53. $user5 = ['id'=>'2', 'name'=>'李四', 'age'=>'20', 'email'=>$email];
  54. printf('<pre>%s</pre>', print_r($user5, true));
  55. echo '<hr>';
  56. //数组的值任然是数组的话,就创建一个多维数组,多维数组中最常用的就是二维数组
  57. //因为重数据表查询的结果,大多以二维数组的形式呈现
  58. $user6 = [
  59. ['id'=>'1', 'name'=>'张三', 'age'=>'17'],
  60. ['id'=>'2', 'name'=>'李四', 'age'=>'18'],
  61. ['id'=>'3', 'name'=>'王麻子', 'age'=>'19'],
  62. ];
  63. printf('<pre>%s</pre>', print_r($user6, true));
  64. echo '<hr>';
  65. $user7 = null;
  66. $user7['1'] = ['id'=>'1', 'name'=>'张三', 'age'=>'17'];
  67. $user7['2'] = ['id'=>'2', 'name'=>'李四', 'age'=>'18'];
  68. $user7['3'] = ['id'=>'3', 'name'=>'王麻子', 'age'=>'19'];
  69. printf('<pre>%s</pre>', print_r($user7, true));
  70. echo $user7[3]['name'];

1.2演示截图




1.3代码演示

  1. <?php
  2. //数组的遍历
  3. //1.一个一个遍历
  4. $workForce = ['id'=>'1', 'name'=>'张三', 'age'=>'22', 'pos'=>'CEO', 'wages'=>1000];
  5. //current():当前数组成中的值。key()
  6. printf('[ %s ] => %s <br>', key($workForce), current($workForce));
  7. //用next来继续遍历
  8. next($workForce);
  9. printf('[ %s ] => %s <br>', key($workForce), current($workForce));
  10. next($workForce);
  11. printf('[ %s ] => %s <br>', key($workForce), current($workForce));
  12. next($workForce);
  13. printf('[ %s ] => %s <br>', key($workForce), current($workForce));
  14. //遍历前一条
  15. prev($workForce);
  16. printf('[ %s ] => %s <br>', key($workForce), current($workForce));
  17. //遍历最后一条
  18. end($workForce);
  19. printf('[ %s ] => %s <br>', key($workForce), current($workForce));
  20. //指针回到第一个元素
  21. reset($workForce);
  22. printf('[ %s ] => %s <br>', key($workForce), current($workForce));
  23. echo '<hr>';
  24. //2.自动遍历,是通过循环来
  25. reset($workForce);
  26. while(true){
  27. printf('[%s] =>%s<br>', key($workForce), current($workForce));
  28. if (next($workForce)) {
  29. continue;
  30. } else{
  31. break;
  32. }
  33. }
  34. echo '<hr>';
  35. //3.用foreach来遍历中间不会中断
  36. $workForces = ['id'=>'1', 'name'=>'张三', 'age'=>null, 'pos'=>'CEO', 'wages'=>1000];
  37. foreach ($workForces as $value) {
  38. printf('%s<br>',$value);
  39. }
  40. echo '<hr>';
  41. //获取数组成员的键与值
  42. foreach ($workForces as $key => $value){
  43. printf('%s<br>', $value);
  44. }
  45. echo '<hr>';
  46. foreach ($workForces as $key => $value) {
  47. printf('[%s] => %s<br>', $key, $value);
  48. }
  49. echo '<hr>';
  50. $user7 = null;
  51. $user7['1'] = ['id'=>'1', 'name'=>'张三', 'age'=>'17'];
  52. $user7['2'] = ['id'=>'2', 'name'=>'李四', 'age'=>'18'];
  53. $user7['3'] = ['id'=>'3', 'name'=>'王麻子', 'age'=>'19'];
  54. //foreach($user7 as $user7){
  55. // printf('%s', print_r($value,true));
  56. // printf('id: %s---name: %s---age:%s<br>',$user7['id'], $user7['name'], $user7['age']);
  57. //}
  58. //echo '<hr>';
  59. foreach($user7 as list('id'=>$id, 'name'=>$name, 'age'=>$age)){
  60. // printf('%s', print_r($value,true));
  61. printf('id: %s---name: %s---age:%s<br>',$id, $name, $age);
  62. }
  63. echo '<hr>';

1.4演示截图


2 数组函数

2.1回调函数操作数组代码演示

  1. <?php
  2. //用回调函数操作数组
  3. //1.array_filter($array,callback)将数组元素依次传入到回调函数中处理
  4. $arr = [0, 1, 2, false, '', null, "0"];
  5. $arr = array_filter($arr, function ($val) {
  6. if ($val === 0 || $val != false) {
  7. return true;
  8. } else {
  9. false;
  10. }
  11. });
  12. printf('<pre>%s</pre>', print_r($arr, true));
  13. echo '<hr>';
  14. // 2.array_walk($array,callback)
  15. //将数组中的元素用于某种操作
  16. $arr = ['张三','李四','隔壁老王'];
  17. array_walk($arr,function($val,$key){
  18. echo "{$key} 是 {$val} <br/>";
  19. });
  20. //改变数组中的值,传参的时候使用引用
  21. array_walk($arr,function(&$val,$key){
  22. $val .= $val;
  23. });
  24. printf('<pre>%s</pre>', print_r($arr, true));
  25. echo '<hr>';
  26. // 3.array_map(callback,$arr1,$arr2...)
  27. // 将回调函数作用到每个数组上,并返回一个新数组:默认索引数组
  28. // 回调函数的参数数量,必须与要处理的数组的数量一致
  29. //创建一个回调函数
  30. $arr1 = [1,2,3,4,5];
  31. $arr2 = [6,7,8,9,10];
  32. //函数写前面,数组参数写后面
  33. $new_arr = array_map(function($val1,$val2){
  34. return $val1 + $val2;
  35. },$arr1,$arr2);
  36. printf('<pre>%s</pre>', print_r($new_arr, true));

2.2演示截图

2.1array_slice() array_splice()

2.1.2代码演示

  1. <?php
  2. //array_slice()
  3. $arr = array( 'a' , 'b' , 'c' , 'd' , 'e' );
  4. $test = array_slice ( $arr , 2 );
  5. $test = array_slice ( $arr , - 2 , 1 );
  6. $test = array_slice ( $arr , 0 , 3 );
  7. print_r ( array_slice ( $arr , 2 , - 1 ));
  8. echo '<hr>';
  9. print_r ( array_slice ( $arr , 2 , - 1 , true ));
  10. echo '<hr>';
  11. //array_splice
  12. $a1=array('a'=>'男友','b'=>'老公','c'=>'闺蜜','d'=>'姐妹');
  13. $a2=array('朋友','小三');
  14. //重第一个更换2个
  15. array_splice($a1,0,2,$a2);
  16. printf('<pre>%s</pre>', print_r($a1, true));

2.1.3演示截图

2.2数组函数

  1. <?php
  2. //array_chunk将一个数组分割成多个
  3. $age=array('zhu'=>'1','gou'=>'5','mao'=>'2','ji'=>'5');
  4. print_r(array_chunk($age,2,true));
  5. echo ('<hr>');
  6. //array_combine创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
  7. $name=array('zhu','gou','mao');
  8. $age=array("1","5","6");
  9. $arr=array_combine($name,$age);
  10. printf('<pre>%s</pre>', print_r($arr, true));
  11. echo ('<hr>');
  12. //array_fill用给定的值填充数组
  13. //前面1表示重1开始后面6表示一直到6,全部用后面的值填充
  14. $test=array_fill(1,6, 'php.cn');
  15. printf('<pre>%s</pre>', print_r($test, true));
  16. echo ('<hr>');
  17. //array_flip交换数组中的键和值
  18. $test1=array('id'=>'admin','position'=>'管理员');
  19. $arr=array_flip($test1);
  20. printf('<pre>%s</pre>', print_r($arr, true));
  21. echo ('<hr>');
  22. //array_keys返回数组中所有的键名
  23. $name=array('1'=>'zhu','2'=>'gou','3'=>'mao','4'=>'ji');
  24. $arr=array_keys($name);
  25. printf('<pre>%s</pre>', print_r($arr, true));
  26. echo ('<hr>');
  27. //array_pad用值将数组填补到指定长度
  28. $name=array('1'=>'zhu','2'=>'gou','3'=>'mao','4'=>'ji');
  29. $arr=array_pad($name,8,'ya');
  30. printf('<pre>%s</pre>', print_r($arr, true));
  31. echo ('<hr>');
  32. //array_sum计算数组中所有值的和
  33. $age=array('zhu'=>'1','gou'=>'5','mao'=>'2','ji'=>'5');
  34. $arr=array_sum($age);
  35. printf('<pre>%s</pre>', print_r($arr, true));
  36. echo ('<hr>');
  37. //array_unique移除数组中重复的值
  38. $name=array('1'=>'zhu','2'=>'gou','3'=>'mao','4'=>'ji','4'=>'ji','4'=>'ji','4'=>'ji');
  39. $arr=array_unique($name);
  40. printf('<pre>%s</pre>', print_r($arr, true));
  41. echo ('<hr>');
  42. //array_multisort对多个数组或多维数组进行排序
  43. $arr1=array(1,30,15,7,25);
  44. $arr2=array(4,30,20,41,66);
  45. $num=array_merge($arr1,$arr2);
  46. array_multisort($num,SORT_DESC,SORT_NUMERIC);
  47. printf('<pre>%s</pre>', print_r($num, true));

2.2数组函数截图


课后总结

通过本节课的学习,学到了很多数组函数以及它们的使用方法,使用数组函数操作数组比较方便

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