博客列表 >数组函数详解

数组函数详解

lilove的博客
lilove的博客原创
2020年07月12日 23:17:201041浏览

URL处理函数

函数及变量 用途
$_GET get方式提交的数据全局变量
$_SERVER['QUERY_STRING'] 全局变量中的QUERY_STRING元素的值就是get方式提交的数据
parse_url() 解析url
parse_str() 解析提交的字符串
base64_encode() 加密二进制编码,例如:图片
base64_decode() 解析二进制编码

示例:

  1. // URL处理函数
  2. $url = 'http://127.0.0.1/20200710/1.php?id=8&name=admin&type=1';
  3. // $_GET是get方式提交的数据全局变量
  4. print_r($_GET);
  5. echo '<br>';
  6. // $_SERVER全局变量中的QUERY_STRING元素的值就是get方式提交的数据
  7. // print_r($_SERVER);
  8. print_r($_SERVER['QUERY_STRING']);
  9. echo '<br>';
  10. // parse_str()解析提交的字符串
  11. parse_str($_SERVER['QUERY_STRING'], $data);
  12. print_r($data);
  13. echo '<br>';
  14. // parse_url()解析url
  15. print_r(parse_url($url));
  16. echo '<br>';
  17. // base64_encode():加密二进制编码,例如:图片
  18. $pic = base64_encode(file_get_contents('1.jpg'));
  19. echo $pic;
  20. // 可以用html输出到前端(减少http请求,但体积很大)
  21. echo "<img src=\"data:image/jpg;base64,{$pic}\" width=\"100\">";
  22. // 通过编码生成图片文件
  23. file_put_contents('1d.jpg', base64_decode($pic));

加密函数

函数 用途
md5() 32位16进制编码
sha1() 40位16进制编码
md5_file() 计算文件的 MD5 散列,值随文件变化而变化

示例:

  1. // 加密函数
  2. // md5()是32位16进制编码
  3. echo md5('小刚'), '<br>';
  4. // sha1()是40位16进制编码
  5. echo sha1('小刚'), '<br>';
  6. // 经常嵌套使用,可多层嵌套
  7. echo md5(sha1('小刚')), '<br>';
  8. // 通常还会使用私钥
  9. $key = 'name';
  10. echo md5(sha1('小刚' . $key)), '<hr>';
  11. // hash函数md5_file():计算文件的 MD5 散列,值随文件变化而变化
  12. echo md5_file('1.php'), '<br>';
  13. // 将文件的MD5值放入文本文件
  14. file_put_contents('md5.text', md5_file('1.php'));
  15. // 通过比较文件MD5值检测文件是否被更改
  16. echo md5_file('1.php') === file_get_contents('md5.text') ? '文件MD5合法' : '文件MD5非法';
  17. // 在上传文件中可用于验证用户是否重复上传文件

数组函数

数组分类示例:

  1. // 数组分类
  2. // 1.索引数组
  3. $array = [1, 2, 3, 4, 5, 6];
  4. // 索引数组索引是从0开始递增1的,上面的数组相当于:
  5. // $array = [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6];
  6. // 格式化打印输出:
  7. printf('<pre>%s</pre>', print_r($array, true));
  8. // 按索引访问,如果索引设置为小数,则自动忽略小数点后的值
  9. echo $array[3], '<br>';
  10. echo $array[1.36], '<br>';
  11. // 2.关联数组
  12. $arr = ['name' => '小刚', 'age' => 18, 'height' => 190, 'sex' => '男'];
  13. echo $arr['name'];

数组创建示例:

  1. // 索引数组
  2. $array = [];
  3. // 追加,系统会自动添加索引
  4. $array[] = '小刚';
  5. $array[] = 18;
  6. printf('<pre>%s</pre>', print_r($array, true));
  7. // 关联数组
  8. $arr['name'] = '小刚';
  9. $arr['age'] = 18;
  10. printf('<pre>%s</pre>', print_r($arr, true));
  11. // 多维数组
  12. $cars = [
  13. ['name' => 'lexs', 'type' => 'A', 'color' => 'red'],
  14. ['name' => 'benz', 'type' => 'A', 'color' => 'blue'],
  15. ['name' => 'honda', 'type' => 'B', 'color' => 'yellow'],
  16. ['name' => '宝骏', 'type' => 'C', 'color' => 'green'],
  17. ['name' => 'toyota', 'type' => 'B', 'color' => 'black']
  18. ];
  19. // 一般不写索引,自动添加索引
  20. printf('<pre>%s</pre>', print_r($cars, true));
  21. // 获取元素
  22. echo $cars[2]['name'];

数组遍历

  1. 使用指针逐个遍历

  2. 循环遍历
    2.1 while循环
    2.2 for循环,遍历索引数组
    2.3 foreach循环
    2.4 list():在一次操作中给一组变量赋值

  3. 遍历对象

示例:

  1. // 1.使用指针逐个遍历
  2. // 数组访问自第一个元素开始
  3. $car = ['name' => 'honda', 'type' => 'B', 'color' => 'yellow'];
  4. // current():获取指针当前位置的元素值
  5. print_r(current($car));
  6. echo '<br>';
  7. // key():获取指针当前位置的元素键
  8. print_r(key($car));
  9. echo '<br>';
  10. // 打印数组
  11. printf('[\'%s\' => %s]<br>', key($car), current($car));
  12. // next():指针后移
  13. next($car);
  14. printf('[\'%s\' => %s]<br>', key($car), current($car));
  15. // prev():指针前移
  16. prev($car);
  17. printf('[\'%s\' => %s]<br>', key($car), current($car));
  18. // end()指针移到最后
  19. end($car);
  20. printf('[\'%s\' => %s]<br>', key($car), current($car));
  21. // reset()指针复位,回到第一个
  22. reset($car);
  23. printf('[\'%s\' => %s]<br>', key($car), current($car));
  24. // 以上操作比较繁琐,不适用
  25. echo '<hr>';
  26. // 2.循环遍历
  27. reset($car);
  28. // 2.1 while循环
  29. while (true) {
  30. printf('[\'%s\' => %s]<br>', key($car), current($car));
  31. if (next($car)) continue;
  32. else break;
  33. }
  34. // 2.2 for循环,遍历索引数组
  35. $array = [1, 2, 3, 4, 5];
  36. for ($i = 0; $i < count($array); $i++) {
  37. echo $array[$i], '<br>';
  38. }
  39. // for循环,遍历关联数组(不常见)
  40. reset($car);
  41. for ($i = 0; $i < count($car); $i++) {
  42. printf('[\'%s\' => %s]<br>', key($car), current($car));
  43. next($car);
  44. }
  45. // 2.3 foreach循环,有两种语法:
  46. // foreach (array_expression as $value)
  47. // statement
  48. // foreach (array_expression as $key => $value)
  49. // statement
  50. // foreach循环指针自动后移,并且不需要复位
  51. $user = ['id' => 20, 'name' => '小刚', 'type' => 'admin', 'email' => 'admin@php.cn'];
  52. foreach ($user as $key => $value) {
  53. echo "['{$key}'] => {$value} <br>";
  54. }
  55. echo '<hr>';
  56. // 如果有二维数组
  57. $user1 = ['id' => 30, 'name' => '小明', 'type' => ['admin', 'normal', 'mid'], 'email' => 'admin@php.cn'];
  58. foreach ($user1 as $key => $value) {
  59. // 直接输出无法解析二维数组
  60. // echo "['{$key}'] => {$value} <br>";
  61. // is_array()判断是否是数组
  62. echo is_array($value) ? print_r($value, true) : printf('[\'%s\']<br>', key($user1), current($user1)), '<br>';
  63. }
  64. echo '<hr>';
  65. $data = [
  66. ['name' => 'lexs', 'type' => 'A', 'color' => 'red'],
  67. ['name' => 'benz', 'type' => 'A', 'color' => 'blue'],
  68. ['name' => 'toyota', 'type' => 'B', 'color' => 'black']
  69. ];
  70. foreach ($data as $dat) {
  71. foreach ($dat as $key => $value) {
  72. echo "['{$key}'] => $value <br>";
  73. }
  74. }
  75. echo '<hr>';
  76. foreach ($data as $dat) {
  77. printf('name:%s, type:%s, color:%s<br>', $dat['name'], $dat['type'], $dat['color']);
  78. }
  79. echo '<hr>';
  80. // 2.4 list():在一次操作中给一组变量赋值
  81. // 可用于解构索引数组
  82. $arr = [1, 2, 3];
  83. list($a, $b, $c) = $arr;
  84. echo $a, $b, $c;
  85. // 在7.0+版本可解构关联数组
  86. $arr1 = ['name' => 'lexs', 'type' => 'A', 'color' => 'red'];
  87. list('name' => $name, 'type' => $type, 'color' => $color) = $arr1;
  88. echo $name . ':' . $color, '<br>';
  89. foreach ($data as list('name' => $name, 'type' => $type, 'color' => $color)) {
  90. printf('名称:%s,等级:%s,颜色:%s', $name, $type, $color);
  91. }
  92. echo '<hr>';
  93. // 3.遍历对象
  94. $obj = new stdClass;
  95. $obj->name = '小刚';
  96. $obj->age = 18;
  97. $obj->sex = '男';
  98. foreach ($obj as $attr => $value) {
  99. echo $attr . ':' . $value . '<br>';
  100. }

总结

  • 掌握加密函数的嵌套使用和私钥使用;

  • 掌握索引数组和关联数组的遍历方式;

  • 重点掌握foreach循环遍历数组与对象。

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