Blogger Information
Blog 40
fans 0
comment 1
visits 39803
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数组的定义与访问以及遍历
Dong.
Original
794 people have browsed it

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

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()遍历方法可以使代码更加简介方便
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