博客列表 >PHP大牛成长之路:数组的定义、访问与遍历

PHP大牛成长之路:数组的定义、访问与遍历

周Sir-BLOG
周Sir-BLOG原创
2020年07月12日 16:06:04569浏览

1、数组的分类

1.1 索引数组

  1. // 索引数组: 位置敏感,访问严重依赖元素在数组中的位置
  2. // 键是数值的索引,表示元素的位置
  3. //定义方法1:
  4. $user_arr1=[0=>'小明',1=>'小王',2=>'小花',3=>'小丽'];
  5. //定义方法2:
  6. $user_arr2=['小明','小王','小花','小丽'];
  7. //定义方法3:
  8. $user_arr3[] = '小明';
  9. $user_arr3[] = '小王';
  10. $user_arr3[] = '小花';
  11. $user_arr3[] = '小丽';
  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, '小明', 18,'xiaoming@php.cn'];
  3. //关联数组
  4. $user_arr2 = ['id'=>'1', 'name'=>'小明', 'age'=>18,'email'=>'xiaoming@php.cn'];
  5. echo $user_arr1[1];
  6. echo $user_arr2['name'];
  7. //以上均输出:小明

2.2 通过数组指针访问

  1. //key():返回数组中的当前元素的键key
  2. //current() - 返回数组中的当前元素的值
  3. //end() - 将内部指针指向数组中的最后一个元素,并输出
  4. //next() - 将内部指针指向数组中的下一个元素,并输出
  5. //prev() - 将内部指针指向数组中的上一个元素,并输出
  6. //reset() - 将内部指针指向数组中的第一个元素,并输出
  7. $user_arr = ['id'=>1, 'name'=>'小明','age'=>18,'email'=>'xiaoming@php.cn'];
  8. echo key($user_arr).':'.current($user_arr).'<br>';
  9. next($user_arr);
  10. echo key($user_arr).':'.current($user_arr).'<br>';
  11. next($user_arr);
  12. echo key($user_arr).':'.current($user_arr).'<br>';
  13. next($user_arr);
  14. echo key($user_arr).':'.current($user_arr).'<br>';
  15. // 输出:
  16. // id:1
  17. // name:小明
  18. // age:18
  19. // email:xiaoming@php.cn
  20. // 注意:如果要回到第一个元素,需要使用指针复位: reset()
  21. // reset($user_arr);

2.3 通过while()循环访问

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

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

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

2.5 通过foreach循环访问(索引/关联数组均适用)

  1. $user_arr = ['id'=>1, 'name'=>'小明','age'=>18,'email'=>'xiaoming@php.cn'];
  2. //输出值
  3. foreach ( $user_arr as $value ){
  4. echo $value . '<br/>';
  5. }
  6. // 输出:
  7. // 1
  8. // 小明
  9. // 18
  10. // xiaoming@php.cn
  1. //输出键名+值
  2. foreach ( $user_arr as $key => $value ){
  3. echo $key . ':' . $value . '<br/>';
  4. }
  5. // 输出:
  6. // id:1
  7. // name:小明
  8. // age:18
  9. // email:xiaoming@php.cn

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

  1. $users = [
  2. ['id' => '101', 'name' => '玉帝', 'age' => 88],
  3. ['id' => '102', 'name' => '王母', 'age' => 78],
  4. ['id' => '103', 'name' => '如来', 'age' => 68],
  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<br>', $id, $name, $age);
  11. }
  • 输出结果:

结论:

  • 对数组的定义与访问加深了了解,list()应用场景还需要多实践。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议