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

PHP 数组的定义与访问、数组的遍历

司马青衫
司马青衫原创
2020年07月16日 19:25:02801浏览

PHP 数组的定义与访问、数组的遍历

PHP 数组的定义与访问

  • php 数组分为:索引数组与关联数组两种
    • 索引数组的键名默认从 0 开始逐项加 1 可以不写
    • 索引数组的值通过索引序号来访问
    • 关联数组的键名为自定义的字符串
    • 关联数组的值通过自定义的键名来访问
  1. <?php
  2. //数组的定义
  3. //1.索引数组
  4. $names = ['张三','李四','王五'];
  5. //索引数组的访问
  6. echo $names[0].'&nbsp;'.$names[1].'&nbsp;'.$names[2].'&nbsp;'.'<br>';
  7. //2.关联数组
  8. $msg = ['id'=>001,'name'=>'张三','age'=>20];
  9. //关联数组的访问
  10. echo $msg['id'].'&nbsp;'.$msg['name'].'&nbsp;'.$msg['age'].'&nbsp;'.'<br>';

PHP 数组的创建

  • 使用追加的方式添加数组信息
    • 索引数组不用填写键名
    • 关联数组填写键名
  • 多维数组(常用二维数组)
  1. <?php
  2. //数组的创建
  3. //1.索引数组
  4. $car = [];
  5. $car[] = 'Audi';
  6. $car[] = 'BMW';
  7. $car[] = 'Benz';
  8. //打印输出数组信息
  9. printf('<pre>%s</pre>',print_r($car,true));
  10. //2.关联数组
  11. $msg = [];
  12. $msg['brand'] = 'Volvo';
  13. $msg['model'] = 'XC60';
  14. $msg['num'] = 82;
  15. printf('<pre>%s</pre>',print_r($msg,true));
  16. //3.多维数组
  17. $cars = [
  18. ['brand'=>'Volvo', 'model'=>'XC60', 'num' => 82],
  19. ['brand'=>'Audi', 'model'=>'Q5L', 'num' => 88],
  20. ['brand'=>'BMW', 'model'=>'X3', 'num' => 101]
  21. ];
  22. printf('<pre>%s</pre>',print_r($cars,true));
  23. //多维数组的访问
  24. echo $cars[1]['brand'];

PHP 数组的遍历

  • 数组的遍历有四种方式
    • 使用指针
    • 使用 while 循环
    • 使用 for 循环
    • 使用 foreach 遍历
  • list()函数可以用来解析/解构数组
  1. <?php
  2. //数组的遍历
  3. $car = ['brand'=>'Audi', 'model'=>'Q5L', 'price'=>40];
  4. //1.使用指针遍历
  5. //current():获取当前元素的值
  6. //key():获取当前元素的键
  7. printf('%s => %s <br>', key($car), current($car));
  8. next($car); //next():指针往下一个移动
  9. printf('%s => %s <br>', key($car), current($car));
  10. prev($car); //prev():指针往上一个移动
  11. printf('%s => %s <br>', key($car), current($car));
  12. reset($car); //reset():指针复位 指针移到最开始位置
  13. printf('%s => %s <br>', key($car), current($car));
  14. end($car); //end():指针移到最末尾位置
  15. printf('%s => %s <br>', key($car), current($car));
  16. //2.使用while遍历
  17. echo '<hr>';
  18. reset($car); //reset():指针复位 指针移到最开始位置
  19. while(true){ //进入while循环
  20. printf('%s => %s <br>', key($car), current($car));
  21. if(next($car)) continue; //指针往下一个移动并判断是否遍历结束
  22. else break;
  23. }
  24. //3.使用for遍历
  25. echo '<hr>';
  26. reset($car); //reset():指针复位 指针移到最开始位置
  27. for($i = 0; $i < count($car); $i++){
  28. printf('%s => %s <br>', key($car), current($car));
  29. next($car); //指针往下一个移动
  30. }
  31. //4.使用foreach遍历
  32. //遍历索引数组
  33. echo '<hr>';
  34. $arr = ['hello', 'world'];
  35. foreach($arr as $value){
  36. echo $value;
  37. }
  38. //遍历关联数组
  39. echo '<hr>';
  40. foreach($car as $msg => $value){
  41. printf('%s => %s <br>', $msg, $value);
  42. }
  43. //5.使用list函数解构解析数组
  44. echo '<hr>';
  45. list('brand'=>$brand, 'model'=>$model, 'price'=>$price) = $car;
  46. echo "brand => {$brand} <br>","model => {$model} <br>","price => {$price} <br>";
  47. //使用foreach+list解析二维数组
  48. echo '<hr>';
  49. $cars = [
  50. ['brand'=>'Volvo', 'model'=>'XC60', 'price' => 39],
  51. ['brand'=>'Audi', 'model'=>'Q5L', 'price' => 41],
  52. ['brand'=>'BMW', 'model'=>'X3', 'price' => 38]
  53. ];
  54. foreach($cars as list('brand'=>$brand, 'model'=>$model, 'price'=>$price)){
  55. echo "brand => {$brand} <br>","model => {$model} <br>","price => {$price} <br>";
  56. }

  • 使用 foreach 不需要指针复位、不需要手动移动指针 自动后移
  • foreachwhilefor 语句更适合遍历数组
  • 使用list函数能直接将一组数组赋值成一堆变量
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议