博客列表 >了解并演示字符串函数,数组的创建和遍历(0710)

了解并演示字符串函数,数组的创建和遍历(0710)

丶久而旧之丶
丶久而旧之丶原创
2020年07月23日 13:23:30612浏览

字符串函数

1.url 函数(获得 get 请求中的字符串)

  • 可以用\$_SERVER 获得 URL 中 GET 请求中的字符串
  • 用 parse_url()函数中的参数获得字符串
  • 通过超全局变量用数组方式获得字符串
  • 通过 explode()函数把上面的字符串转为数组
  • 通过 parse_str()函数把字符串转为数组
  1. $url = 'http://xiaoshang.com/PHP/0710/0710.php?id=3&name=ming&age=18';
  2. // 1.可以用$_SERVER获得URL中GET请求中的字符串
  3. echo ($_SERVER['QUERY_STRING']);
  4. echo '<hr>';
  5. // 2.用parse_url()函数中的参数获得字符串
  6. print_r(parse_url($url));
  7. echo '<br>';
  8. echo (parse_url($url)['query']),'<hr>';
  9. // 通过超全局变量用数组方式获得字符串
  10. $get = print_r(($_GET),true);
  11. echo "<pre>$get</pre><hr>";
  12. // 通过explode()函数把上面的字符串转为数组
  13. $gets = print_r(explode('&',$_SERVER['QUERY_STRING']),true);
  14. echo "<pre>$gets</pre><hr>";
  15. // 通过parse_str()函数把字符串转为数组
  16. parse_str($_SERVER['QUERY_STRING'],$getss);
  17. $gget = print_r($getss,true);
  18. echo "<pre>$gget</pre>";

2.base64_encode()函数:将二进制数据进行编码后加密传输(图片,视频之类)

  1. // 加密编码图片
  2. $img = base64_encode(file_get_contents('hasaki.jpg'));
  3. // 解码输出图片
  4. echo <<<IMG
  5. <img src="data:image/jpeg;base64,{$img}">
  6. IMG;

base64()函数:直接解码并输出优点在于可以减少 http 请求次数和网络消耗,缺点是如果原图的位置或大小做了修改那么就不能正常输出了

3.md5_file()函数:查看文件是否被更新过

  1. // md5_file()函数:查看文件是否被更新过
  2. // 创建了一个文件里面有0710.md的唯一编码
  3. file_put_contents('md5.txt',md5_file('0710.md'));
  4. // 判断文件是否有做更改
  5. echo (md5_file('0710.md') === file_get_contents('md5.txt')) ? '文件没有更改' : '文件已更改';


  • 更改0710.md文件内的内容

数组

数组的分类

  • 索引数组
  • 关联数组
  1. // 1.索引数组(索引数组中元素的索引默认从0开始递增1,访问依赖元素在数组中的位置)
  2. $arr = [7,'小明','男',19,'中国'];
  3. printf('<pre>%s</pre>',print_r($arr,true));
  4. // 可通过索引访问值
  5. echo $arr['1'],$arr['3'],'<hr>';
  6. // 2.关联数组(键的类型是字符串并应该有语意化的,值与位置无关只和键有关)
  7. $arrs = ['id'=>7, 'name'=>'小明', 'sex'=>'男', 'age'=>19,'nation'=>'中国'];
  8. // printf('<pre>%s</pre>',print_r($arrs,true));
  9. // 也可以通过键来访问
  10. echo $arrs['sex'],$arrs['nation'],'<hr>';
  11. // 可以通过追加方式加入数据或创建新数组
  12. // 没有键值追加的是索引数组
  13. $arrs[] = '打篮球';
  14. printf('<pre>%s</pre>',print_r($arrs,true));
  15. // 如果有键值那么追加的是关联数组
  16. $arrs['taste'] = '踢足球';
  17. printf('<pre>%s</pre>',print_r($arrs,true));

可通过追加方式加入数据

  • 二维数组(也可通过键名单独取值)
  1. $arr = [
  2. ['id'=>1, 'name'=>'小明', 'sex'=>'男'],
  3. ['id'=>2, 'name'=>'小红', 'sex'=>'女'],
  4. ['id'=>3, 'name'=>'小花', 'sex'=>'女'],
  5. ];
  6. printf('<pre>%s</pre>',print_r($arr,true));
  7. // 通过键访问值
  8. echo $arr[2]['name'];

遍历数组

1.手动遍历
  1. $arrs = ['id'=>7, 'name'=>'小明', 'sex'=>'男', 'age'=>19,'nation'=>'中国'];
  2. // 手动遍历
  3. // key():获取指针当前位置的数组元素的键(key)
  4. // current():获取指针当前位置数组元素的值(value)
  5. printf("['%s'] => %s<hr>",key($arrs), current($arrs));
  6. // 指针后移
  7. next($arrs);
  8. printf("['%s'] => %s<hr>",key($arrs), current($arrs));
  9. next($arrs);
  10. printf("['%s'] => %s<hr>",key($arrs), current($arrs));
  11. // 指针前移
  12. prev($arrs);
  13. printf("['%s'] => %s<hr>",key($arrs), current($arrs));
  14. // 指针移到最后一个
  15. end($arrs);
  16. printf("['%s'] => %s<hr>",key($arrs), current($arrs));
  17. // 指针移动到第一个
  18. reset($arrs);
  19. printf("['%s'] => %s<hr>",key($arrs), current($arrs));

2.循环遍历(自动)
  • 1.while循环
  1. reset($arrs);
  2. while (true){
  3. printf("['%s'] => %s<br>",key($arrs), current($arrs));
  4. if(next($arrs));
  5. else break;
  6. }
  • 2.for循环(不推荐)
  1. reset($arrs);
  2. for ($a = 0;$a < count($arrs);$a++){
  3. printf("['%s'] => %s<br>",key($arrs), current($arrs));
  4. next($arrs);
  5. }
  • 3.foreach循环(不需要指针复位,指针会自动后移)
  1. foreach ($arrs as $key=>$value){
  2. echo "['$key'] => $value<br>";
  3. }
  • 4.遍历二维数组
  1. $arr = ['id'=>7, 'name'=>['小明','小花','小红'], 'sex'=>'男', 'age'=>19,'nation'=>'中国'];
  2. foreach($arr as $key=>$value){
  3. // echo "['$key'] => $value<br>";
  4. echo is_array($value) ?"['$key'] =>" .print_r($value,true):"['$key'] => $value",'<br>';
  5. }

直接取值

  • 1.内部再次foreach
  • 2.用printf()函数
  • 3.list()解构遍历
  • foreach遍历对象属性
  1. // 创建数组
  2. $arr = [];
  3. $arr[] = ['id'=>10, 'name'=>'小明', 'sex'=>'男'];
  4. $arr[] = ['id'=>20, 'name'=>'小花', 'sex'=>'女'];
  5. $arr[] = ['id'=>30, 'name'=>'小红', 'sex'=>'女'];
  6. // 1.内部再次foreach
  7. foreach($arr as $v){
  8. foreach($v as $key => $value){
  9. echo "['$key'] => $value<br>";
  10. }
  11. }
  12. echo '<hr>';
  13. // 2.用printf()函数
  14. foreach($arr as $value){
  15. printf("学号:%s , 姓名:%s , 性别:%s<br>",$value['id'],$value['name'],$value['sex']);
  16. }
  17. echo '<hr>';
  18. // 3.list()解构遍历
  19. list('id'=>$id,'name'=>$name,'sex'=>$sex) = ['id'=>10, 'name'=>'小明', 'sex'=>'男'];
  20. echo "{$id} <br> {$name} <br> {$sex} <br>";
  21. foreach($arr as list('id'=>$id,'name'=>$name,'sex'=>$sex)){
  22. printf("学号:%s , 姓名:%s , 性别:%s<br>",$id,$name,$sex);
  23. }
  24. echo '<hr>';
  25. // 4.foreach遍历对象属性
  26. $obj = new stdclass;
  27. $obj->name = 'admin';
  28. $obj->role = '管理员';
  29. $obj->email = 'admin@qq.com';
  30. foreach($obj as $p=>$v){
  31. echo "['$p']=>$v<br>";
  32. }

总结

1.对于还有很多字符串函数需要自行查看手册并了解和测试使用
2.对于数组有一个初步的认识
3.数组遍历方式需要熟记并多去敲代码,以便掌握。

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