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

PHP数组的定义与遍历访问

emagic
emagic原创
2020年07月12日 23:00:49892浏览

0710-作业

一、数组的定义与访问

数组的分类:

1.索引数组: 位置敏感,严重依赖元素在数组中的位置;键是数值的索引,表示元素的位置;索引数组以追加的方式添加;默认从0开始递增

2.关联数组:键的类型是字符串,访问与元素在数组中的位置无关,只与它的键名相关

  1. <?php
  2. //1.索引数组
  3. //定义:
  4. $day=["星期一","星期二","星期三","星期四","星期五"];
  5. //系统自动按顺序添加序号,等同与 $day=[0=>"星期一",1=>"星期二",2=>"星期三",3=>"星期四",4=>"星期五"]
  6. //按索引访问:索引号如果是小数,是取整,忽略小数部分
  7. echo $day[1]; //输出星期二
  8. echo '<hr>';
  9. // 2.关联数组:与位置无关
  10. $day=["mon"=>"星期一","tue"=>"星期二","wed"=>"星期三","Thur"=>"星期四","fri"=>"星期五"];
  11. //按关联键访问,键的类型是字符串,键是值的索引,用语义化的表示
  12. echo $day["fri"];
  13. //输出星期五
  14. echo '<hr>';
  15. // 创建数组
  16. // 1.索引数组,以追加的方式添加
  17. $day = [];
  18. $day[] = '星期一';
  19. $day[] = '星期er';
  20. $day[] = '星期3';
  21. printf('<pre>%s</pre>', print_r($day, true));
  22. echo '<hr>';
  23. // 2.关联数组
  24. $date['mon'] = '星期一';
  25. $date['sat'] = '星期六';
  26. $date['sun'] = '星期日';
  27. printf('<pre>%s</pre>', print_r($date, true));
  28. // 3.多维数组,二维用的最多
  29. $course = [
  30. 0=>['id' => 1, 'wuwen' => '语文', 'time' => 50],
  31. 1=>['id' => 2, 'math' => '数学', 'time' => 60],
  32. 2=>['id' => 3, 'phy' => '物理', 'time' => 70],
  33. ];
  34. // 获取数学的方式:
  35. printf('<pre>%s</pre>', print_r($course[1]['math'], true));

二、数组的遍历,使用指针,for/whie,foreach,list全部用到

1.使用数组指针,逐个遍历

  • current():获取当前位置的数组元素的值value

  • key():获取当前数组元素的key

  • next():访问完成之后,指针手工后移

  • prev():指针前移

  • end()直接取最后一个元素

  • reset()指针复位,回到第一个

  1. <?php
  2. //指针遍历
  3. $course = ['id' => '01', 'name' => '王老师', 'age' => 23, 'course' => '数学', 'class' => "三年五班"];
  4. // key()取键和current()取值
  5. printf('[\'%s\']=>%s<br>', key($course), current($course));
  6. // 访问完成之后,指针手工后移
  7. next($course);
  8. printf('[\'%s\']=>%s<br>', key($course), current($course));
  9. next($course);
  10. // prev():指针前移
  11. // prev($course);
  12. printf('[\'%s\']=>%s<br>', key($course), current($course));
  13. // end()直接访问最后一个
  14. end($course);
  15. printf('[\'%s\']=>%s<br>', key($course), current($course));
  16. // reset()指针复位,回到第一个
  17. reset($course);
  18. printf('[\'%s\']=>%s<hr>', key($course), current($course));

2.whilefor方式循环遍历

  1. //1.用while循环
  2. reset($course);
  3. while(true){
  4. printf('[\'%s\']=>%s<hr>', key($course), current($course));
  5. if (next($course)) continue;
  6. else break;
  7. }
  8. // 2.用for循环来实现遍历关联数组
  9. reset($course);
  10. for ($i = 0; $i < count($course); $i++) {
  11. printf('[\'%s\']=>%s<br>', key($course), current($course));
  12. next($course);
  13. }

3.foreach循环(php重点掌握)

  • foreach 自动复位及下移指针,php中使用非常方便
  1. <?php
  2. //foreach,遍历
  3. $course = ['id' => '01', 'name' => '王老师', 'age' => 23, 'course' => ['数学','英语','物理'], 'class' => "三年五班"];
  4. foreach($course as $k => $val){
  5. echo is_array($val)?print_r($val,true):$val,'<br>';
  6. }

  1. <?php
  2. //foreach遍历二维数组
  3. <?php
  4. $course = [
  5. 0=>['id' => 1, 'wuwen' => '语文', 'time' => 50],
  6. 1=>['id' => 2, 'math' => '数学', 'time' => 60],
  7. 2=>['id' => 3, 'phy' => '物理', 'time' => 70],
  8. ];
  9. foreach($course as $cor){
  10. vprintf('id=%d,课程=%s,课时:%s<br>',$cor);
  11. }

4.list():解析/解构索引数组和关联数组

  1. <?php
  2. $course = [
  3. ['id' => 1, 'class' => '语文', 'time' => 50],
  4. ['id' => 2, 'class' => '数学', 'time' => 60],
  5. ['id' => 3, 'class' => '物理', 'time' => 70],
  6. ];
  7. foreach($course as list('id'=>$id,'class'=>$class,'time'=>$time)){
  8. printf('id=%d,课程=%s,课时:%s<br>',$id,$class,$time);
  9. }

其他知识点

  • $_GET 获取GET传参的全局变量
  • $_SERVER 获取php服务器环境变量
  • print_r($_SERVER[‘QUERY_STRING’]); 获取GET方法查询字符串
  • parse_url 解析url地址
  • base64_encode 将二进制数据进行编码加密后传输,编码后体积比原文件扩大三倍,虽然体积大了,但是可以随着php文本一次性传输到前端浏览器,不用html解析的时候多次发起http请求,减少访问服务器次数,适用于一些更新不太频繁的资源
  1. <?php
  2. $img = base64_encode(file_get_contents('girl.jpg'));
  3. echo $img;
  4. echo "<img src=\"data:image/jpeg;base64,{$img}\" width=\"500\">";
  • md5()md5加密返回一个32位的16进制字符串

  • sha1()哈希加密返回一个40位的16进制字符串

  • md5_file()监测文件是否修改,只要文件更新了,他的值就会改变

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