Blogger Information
Blog 53
fans 3
comment 0
visits 46627
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP数组的定义与遍历访问
emagic
Original
880 people have browsed it

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()监测文件是否修改,只要文件更新了,他的值就会改变

Correcting teacher:GuanhuiGuanhui

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