批改状态:合格
老师批语:一下改了你三篇作业,整体写的还行。
| 函数及变量 | 用途 |
|---|---|
$_GET |
get方式提交的数据全局变量 |
$_SERVER['QUERY_STRING'] |
全局变量中的QUERY_STRING元素的值就是get方式提交的数据 |
parse_url() |
解析url |
parse_str() |
解析提交的字符串 |
base64_encode() |
加密二进制编码,例如:图片 |
base64_decode() |
解析二进制编码 |
示例:
// URL处理函数$url = 'http://127.0.0.1/20200710/1.php?id=8&name=admin&type=1';// $_GET是get方式提交的数据全局变量print_r($_GET);echo '<br>';// $_SERVER全局变量中的QUERY_STRING元素的值就是get方式提交的数据// print_r($_SERVER);print_r($_SERVER['QUERY_STRING']);echo '<br>';// parse_str()解析提交的字符串parse_str($_SERVER['QUERY_STRING'], $data);print_r($data);echo '<br>';// parse_url()解析urlprint_r(parse_url($url));echo '<br>';// base64_encode():加密二进制编码,例如:图片$pic = base64_encode(file_get_contents('1.jpg'));echo $pic;// 可以用html输出到前端(减少http请求,但体积很大)echo "<img src=\"data:image/jpg;base64,{$pic}\" width=\"100\">";// 通过编码生成图片文件file_put_contents('1d.jpg', base64_decode($pic));
| 函数 | 用途 |
|---|---|
md5() |
32位16进制编码 |
sha1() |
40位16进制编码 |
md5_file() |
计算文件的 MD5 散列,值随文件变化而变化 |
示例:
// 加密函数// md5()是32位16进制编码echo md5('小刚'), '<br>';// sha1()是40位16进制编码echo sha1('小刚'), '<br>';// 经常嵌套使用,可多层嵌套echo md5(sha1('小刚')), '<br>';// 通常还会使用私钥$key = 'name';echo md5(sha1('小刚' . $key)), '<hr>';// hash函数md5_file():计算文件的 MD5 散列,值随文件变化而变化echo md5_file('1.php'), '<br>';// 将文件的MD5值放入文本文件file_put_contents('md5.text', md5_file('1.php'));// 通过比较文件MD5值检测文件是否被更改echo md5_file('1.php') === file_get_contents('md5.text') ? '文件MD5合法' : '文件MD5非法';// 在上传文件中可用于验证用户是否重复上传文件
数组分类示例:
// 数组分类// 1.索引数组$array = [1, 2, 3, 4, 5, 6];// 索引数组索引是从0开始递增1的,上面的数组相当于:// $array = [0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => 6];// 格式化打印输出:printf('<pre>%s</pre>', print_r($array, true));// 按索引访问,如果索引设置为小数,则自动忽略小数点后的值echo $array[3], '<br>';echo $array[1.36], '<br>';// 2.关联数组$arr = ['name' => '小刚', 'age' => 18, 'height' => 190, 'sex' => '男'];echo $arr['name'];
数组创建示例:
// 索引数组$array = [];// 追加,系统会自动添加索引$array[] = '小刚';$array[] = 18;printf('<pre>%s</pre>', print_r($array, true));// 关联数组$arr['name'] = '小刚';$arr['age'] = 18;printf('<pre>%s</pre>', print_r($arr, true));// 多维数组$cars = [['name' => 'lexs', 'type' => 'A', 'color' => 'red'],['name' => 'benz', 'type' => 'A', 'color' => 'blue'],['name' => 'honda', 'type' => 'B', 'color' => 'yellow'],['name' => '宝骏', 'type' => 'C', 'color' => 'green'],['name' => 'toyota', 'type' => 'B', 'color' => 'black']];// 一般不写索引,自动添加索引printf('<pre>%s</pre>', print_r($cars, true));// 获取元素echo $cars[2]['name'];
使用指针逐个遍历
循环遍历
2.1 while循环
2.2 for循环,遍历索引数组
2.3 foreach循环
2.4 list():在一次操作中给一组变量赋值
遍历对象
示例:
// 1.使用指针逐个遍历// 数组访问自第一个元素开始$car = ['name' => 'honda', 'type' => 'B', 'color' => 'yellow'];// current():获取指针当前位置的元素值print_r(current($car));echo '<br>';// key():获取指针当前位置的元素键print_r(key($car));echo '<br>';// 打印数组printf('[\'%s\' => %s]<br>', key($car), current($car));// next():指针后移next($car);printf('[\'%s\' => %s]<br>', key($car), current($car));// prev():指针前移prev($car);printf('[\'%s\' => %s]<br>', key($car), current($car));// end()指针移到最后end($car);printf('[\'%s\' => %s]<br>', key($car), current($car));// reset()指针复位,回到第一个reset($car);printf('[\'%s\' => %s]<br>', key($car), current($car));// 以上操作比较繁琐,不适用echo '<hr>';// 2.循环遍历reset($car);// 2.1 while循环while (true) {printf('[\'%s\' => %s]<br>', key($car), current($car));if (next($car)) continue;else break;}// 2.2 for循环,遍历索引数组$array = [1, 2, 3, 4, 5];for ($i = 0; $i < count($array); $i++) {echo $array[$i], '<br>';}// for循环,遍历关联数组(不常见)reset($car);for ($i = 0; $i < count($car); $i++) {printf('[\'%s\' => %s]<br>', key($car), current($car));next($car);}// 2.3 foreach循环,有两种语法:// foreach (array_expression as $value)// statement// foreach (array_expression as $key => $value)// statement// foreach循环指针自动后移,并且不需要复位$user = ['id' => 20, 'name' => '小刚', 'type' => 'admin', 'email' => 'admin@php.cn'];foreach ($user as $key => $value) {echo "['{$key}'] => {$value} <br>";}echo '<hr>';// 如果有二维数组$user1 = ['id' => 30, 'name' => '小明', 'type' => ['admin', 'normal', 'mid'], 'email' => 'admin@php.cn'];foreach ($user1 as $key => $value) {// 直接输出无法解析二维数组// echo "['{$key}'] => {$value} <br>";// is_array()判断是否是数组echo is_array($value) ? print_r($value, true) : printf('[\'%s\']<br>', key($user1), current($user1)), '<br>';}echo '<hr>';$data = [['name' => 'lexs', 'type' => 'A', 'color' => 'red'],['name' => 'benz', 'type' => 'A', 'color' => 'blue'],['name' => 'toyota', 'type' => 'B', 'color' => 'black']];foreach ($data as $dat) {foreach ($dat as $key => $value) {echo "['{$key}'] => $value <br>";}}echo '<hr>';foreach ($data as $dat) {printf('name:%s, type:%s, color:%s<br>', $dat['name'], $dat['type'], $dat['color']);}echo '<hr>';// 2.4 list():在一次操作中给一组变量赋值// 可用于解构索引数组$arr = [1, 2, 3];list($a, $b, $c) = $arr;echo $a, $b, $c;// 在7.0+版本可解构关联数组$arr1 = ['name' => 'lexs', 'type' => 'A', 'color' => 'red'];list('name' => $name, 'type' => $type, 'color' => $color) = $arr1;echo $name . ':' . $color, '<br>';foreach ($data as list('name' => $name, 'type' => $type, 'color' => $color)) {printf('名称:%s,等级:%s,颜色:%s', $name, $type, $color);}echo '<hr>';// 3.遍历对象$obj = new stdClass;$obj->name = '小刚';$obj->age = 18;$obj->sex = '男';foreach ($obj as $attr => $value) {echo $attr . ':' . $value . '<br>';}
掌握加密函数的嵌套使用和私钥使用;
掌握索引数组和关联数组的遍历方式;
重点掌握foreach循环遍历数组与对象。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号