博客列表 >数组的定义与访问以及遍历

数组的定义与访问以及遍历

Dong.
Dong.原创
2020年08月11日 10:36:55795浏览

数组是什么?
数组是一个能在单个变量中存储多个值的特殊变量,并且您可以根据键访问其中的值。

1. 数组的分类

1.1 索引数组

  1. // 索引数组: 位置敏感,访问严重依赖元素在数组中的位置
  2. // 键是数值的索引,表示元素的位置
  3. //定义方法1:
  4. $user_arr1=[0=>'peter',1=>'朱老师',2=>'灭绝老师',3=>'php.cn'];
  5. //定义方法2:
  6. $user_arr2=['peter','朱老师','灭绝老师','php.cn'];
  7. //定义方法3:
  8. $user_arr3[] = 'peter';
  9. $user_arr3[] = '朱老师';
  10. $user_arr3[] = '灭绝老师';
  11. $user_arr3[] = 'php.cn';
  12. //注意:如果未定义 $user_arr3=[],将自动创建,否则以追加的方式添加;
  13. echo $user_arr1[2];
  14. echo $user_arr2[2];
  15. echo $user_arr3[2];
  16. //输出:灭绝老师

1.2 关联数组

  1. // 关联数组,键的类型是字符串,应该有语义化的
  2. // 关联数组的元素访问与元素在数组中的位置无关,只与它的键名相关
  3. //定义方法1:
  4. $user_arr1 = ['id'=>1, 'name'=>'小明','age'=>18,'email'=>'xiaoming@php.cn'];
  5. //定义方法2:
  6. $user_arr2['id'] = 1;
  7. $user_arr2['name'] = '小明';
  8. $user_arr2['age'] = 18;
  9. $user_arr2['email'] = 'xiaoming@php.cn';
  10. //注意:如果未定义 $user_arr2=[],将自动创建,否则以追加的方式添加;
  11. echo $user_arr1['name'];
  12. echo $user_arr2['name'];
  13. //输出:小明

2. 数组的访问

2.1 通过索引直接访问(或键名)

  1. //索引数组
  2. $user_arr1 = [1, 'peter', 18,'xiaoming@php.cn'];
  3. //关联数组
  4. $user_arr2 = ['id'=>'1', 'name'=>'perer', 'age'=>18,'email'=>'php.cn'];
  5. echo $user_arr1[1];
  6. echo $user_arr2['name'];
  7. //以上均输出:peter

2.2 通过数组指针直接访问

  1. //key():返回数组中的当前元素的键key
  2. //current() - 返回数组中的当前元素的值
  3. //end() - 将内部指针指向数组中的最后一个元素,并输出
  4. //next() - 将内部指针指向数组中的下一个元素,并输出
  5. //prev() - 将内部指针指向数组中的上一个元素,并输出
  6. //reset() - 将内部指针指向数组中的第一个元素,并输出
  7. $user_arr = ['id'=>1, 'name'=>'peter','age'=>18,'email'=>'php.cn];
  8. echo key($user_arr).''.current($user_arr).'
  9. ';
  10. next($user_arr);
  11. echo key($user_arr).''.current($user_arr).'
  12. ';
  13. next($user_arr);
  14. echo key($user_arr).''.current($user_arr).'
  15. ';
  16. next($user_arr);
  17. echo key($user_arr).''.current($user_arr).'
  18. ';
  19. // 输出:
  20. // id:1
  21. // name:peter
  22. // age:18
  23. // email:php.cn
  24. // reset($user_arr);

注意:如果要回到第一个元素,需要使用指针复位: reset()

2.3 通过while()循环访问

  1. while (true) {
  2. echo key($user_arr).':'.current($user_arr).'
  3. ';
  4. if (next($user_arr)){
  5. continue;
  6. }else{
  7. break;
  8. }
  9. }

2.4 通过for()循环访问(适合索引方式的数组)

  1. $user_arr = [1,'peter',18,'php.cn'];
  2. for ( $i = 0; $i < count($user_arr); $i++ ){
  3. echo $user_arr[$i] . '
  4. ';
  5. }
  6. // 输出:
  7. // 1
  8. // peter
  9. // 18
  10. // php.cn

2.5 通过foreach循环访问(均适用)

  1. $user_arr = ['id'=>1, 'name'=>'peter','age'=>18,'email'=>'php.cn'];
  2. //输出值
  3. foreach ( $user_arr as $value ){
  4. echo $value . '
  5. ';
  6. }
  7. // 输出:
  8. // 1
  9. // peter
  10. // 18
  11. // php.cn
  12. //输出键名+值
  13. foreach ( $user_arr as $key => $value ){
  14. echo $key . ':' . $value . '
  15. ';
  16. }
  17. // 输出:
  18. // id:1
  19. // name:peter
  20. // age:18
  21. // email:php.cn

2.6 通过foreach + list()循环访问多维数组

  1. $users = [
  2. ['id' => '1', 'name' => 'peter', 'age' => 18],
  3. ['id' => '2', 'name' => '灭绝老师', 'age' => 18],
  4. ['id' => '3', 'name' => '郭靖', 'age' => 18],
  5. ];
  6. //list()用于在一次操作中给一组变量赋值
  7. // list($a, $b,$c) = [100,300,500];
  8. // echo $a, $b, $c;
  9. foreach ($users as list('id'=>$id, 'name'=>$name, 'age'=>$age) ) {
  10. printf('id=%s, 姓名=%s, 年龄: %s
  11. ', $id, $name, $age);
  12. }
  13. //输出结果:
  14. //id=1,name=peter,age:18
  15. //id=2,name=灭绝老师,age:18
  16. //id=3,name=郭靖,age:18

总结:

  • 对于数组的定义有了一个全面的认知,后续得多多使用尽快掌握
  • 数组的访问及遍历有多种方法可以操作
  • list()遍历方法可以使代码更加简介方便
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议