Blogger Information
Blog 19
fans 0
comment 0
visits 16279
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php基础知识数组的遍历与数组函数
῀℡῀ᵒᵐᵍᵎᵎᵎ
Original
667 people have browsed it

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数组函数截图


课后总结

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

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:对海量重复数据, 进行批量处理, 这是计算机最擅长干得活, 而数组是这些数据的最佳表现形式
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post