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

PHP数组的定义与访问及其遍历

longlong
longlong原创
2020年07月13日 18:21:09644浏览

1. 数组的分类与访问

  • 数组分为索引数组和关联数组,其访问方式分别是通过索引值和键名,示例如下:
  1. <?php
  2. // 1. 索引数组
  3. // 索引数组的键名是数值
  4. $stu = ['张三','李四','王五','赵六'];
  5. // 格式化打印输出这个数组,可以看出,其索引为数值,默认从0开始,递增1
  6. printf('<pre>%s</pre>',print_r($stu,true));
  7. // 访问是通过索引值
  8. echo $stu[0],'<br>';
  9. echo $stu[3],'<hr>';
  10. // 2. 关联数组
  11. // 关联数组的键名是字符串,取名要做到语义化
  12. $info = [ 'id'=>1001 , 'name'=>'jack' , 'sex'=>'male' , 'score'=>90 ];
  13. // 访问是通过键名访问
  14. echo $info['id'],'<br>';
  15. echo $info['sex'],'<hr>';

  • 数组的创建
  1. <?php
  2. // 1. 索引数组的创建
  3. // 先创建一个空数组
  4. $hobby = [];
  5. // 通过追加的方式向数组中添加元素
  6. $hobby[] = 'fish';
  7. $hobby[] = 'ball';
  8. $hobby[] = 'eat';
  9. $hobby[] = 'readiong';
  10. // 格式化打印此数组
  11. printf('<pre>%s</pre>',print_r($hobby,true));
  12. // 2. 关键数组的创建
  13. $info = [];
  14. $info['name'] = 'Alice';
  15. $info['hobby'] = 'writing';
  16. $info['sex'] = 'female';
  17. $info['age'] = 25;
  18. printf('<pre>%s</pre>',print_r($info,true));
  19. // 3. 多维数组的创建
  20. // 示例:创建一个二位数组
  21. $arr = [
  22. [ 'id'=>1001 , 'name'=>'Jack' , 'hobby'=>'fish'],
  23. [ 'id'=>1002 , 'name'=>'Mike' , 'hobby'=>'watch'],
  24. [ 'id'=>1003 , 'name'=>'Lisa' , 'hobby'=>'book'],
  25. [ 'id'=>1004 , 'name'=>'Tomi' , 'hobby'=>'music']
  26. ];
  27. printf('<pre>%s</pre>',print_r($arr,true));
  28. // 访问其中的元素
  29. echo $arr[2]['name'];

2. 数组的遍历

  • 使用指针遍历,示例如下:
  1. <?php
  2. $arr = [];
  3. $arr['id'] = 1001;
  4. $arr['name'] = '老王';
  5. $arr['age'] = 58;
  6. printf('<pre>%s</pre>',print_r($arr,true));
  7. // 使用指针遍历数组
  8. // current():获得当前指针在数组中的值
  9. // key():获得当前指针在数组中的键名
  10. printf('[%s] => %s<br>',key($arr),current($arr));
  11. // next():指针下移
  12. next($arr);
  13. printf('[%s] => %s<br>',key($arr),current($arr));
  14. next($arr);
  15. printf('[%s] => %s<br>',key($arr),current($arr));
  16. // prev():指针上移
  17. prev($arr);
  18. printf('[%s] => %s<br>',key($arr),current($arr));
  19. // end():指针指向数组中的最后一个元素
  20. end($arr);
  21. printf('[%s] => %s<br>',key($arr),current($arr));
  22. // reset():复位,即指针指向数组中的第一个元素
  23. reset($arr);
  24. printf('[%s] => %s<br>',key($arr),current($arr));

  • 使用循环遍历,示例如下:
  1. <?php
  2. // 1. 使用while循环遍历
  3. $arr = [];
  4. $arr['id'] = 1001;
  5. $arr['name'] = '老王';
  6. $arr['age'] = 58;
  7. printf('<pre>%s</pre>',print_r($arr,true));
  8. while(true){
  9. printf('[%s] => %s<br>',key($arr),current($arr));
  10. if(next($arr)) continue;
  11. else break;
  12. }
  13. echo '<hr>';
  14. // 2. 使用for循环遍历
  15. reset($arr);
  16. for( $i=0 ; $i<count($arr) ; $i++ ){
  17. printf('[%s] => %s<br>',key($arr),current($arr));
  18. next($arr);
  19. }
  20. echo '<hr>';
  21. // 换一个索引数组来遍历
  22. $info = ['张三',21,'fish'];
  23. for( $i=0; $i<count($info); $i++ ){
  24. echo $info[$i].'<br>';
  25. }
  26. echo '<hr>';
  27. // 3. 使用foreach循环遍历
  28. foreach( $arr as $key => $value){
  29. echo "[$key] => $value <br>";
  30. }
  31. echo '<hr>';
  32. // 若数组中的某个元素也是一个数组,如下:对arr数组再增加一个元素
  33. $arr['hobby'] = ['fish','reading','ball'];
  34. // 先看看现在的数组
  35. printf('<pre>%s</pre><hr>',print_r($arr,true));
  36. // 现在遍历这个数组,需要判断一维数组中的元素的值是否为数组
  37. foreach( $arr as $key => $value ){
  38. echo is_array($value) ? '<pre>'.print_r($value,true).'</pre>'.'<br>' : "[$key] => $value <br>";
  39. }
  40. echo '<hr>';
  41. // 遍历二位数组
  42. $arr = [
  43. [ 'id'=>1001 , 'name'=>'Jack' , 'hobby'=>'fish'],
  44. [ 'id'=>1002 , 'name'=>'Mike' , 'hobby'=>'watch'],
  45. [ 'id'=>1003 , 'name'=>'Lisa' , 'hobby'=>'book'],
  46. [ 'id'=>1004 , 'name'=>'Tomi' , 'hobby'=>'music']
  47. ];
  48. foreach( $arr as $index => $user ){
  49. foreach( $user as $key => $value ){
  50. echo "[$key] => $value <br>";
  51. }
  52. echo '<br>';
  53. }
  54. // 简化遍历这个二维数组
  55. foreach( $arr as $value ){
  56. printf( 'id = %s, name = %s, hobby = %s <br>', $value['id'], $value['name'], $value['hobby'] );
  57. }
  58. echo '<hr>';
  59. // 4. list()
  60. list( $x , $y) = [ 100 , 200];
  61. echo $x.' '.$y.'<br>';
  62. list( 'id' => $id, 'name' => $name ) = ['id' => 1001, 'name' => 'jack'];
  63. echo $id.' '.$name.'<br>';
  64. echo '<hr>';
  65. // 使用foreach+list来遍历二维数组
  66. foreach( $arr as list( 'id' => $id, 'name' => $name, 'hobby' => $hobby ) ){
  67. printf( 'id = %s, name = %s, hobby = %s <br>', $id , $name , $hobby );
  68. }

3. 总结

  • 了解数组分为索引数组和关联数组,以及如何访问数组中的元素

  • 一维数组和多维数组如何创建以及各自如何访问

  • 利用各种循环来遍历数组,指针,while,for,foreach都可以对数组进行遍历,但是在实际开发中,foreach是用途最广的,它是不需要对指针进行复位操作的,也不需要更新循环条件,它会自动遍历。而且foreach结合list来遍历多维数组,也是非常的简便,并且foreach也能遍历对象。

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