批改状态:合格
老师批语:写得不错
$url = 'http://xiaoshang.com/PHP/0710/0710.php?id=3&name=ming&age=18';// 1.可以用$_SERVER获得URL中GET请求中的字符串echo ($_SERVER['QUERY_STRING']);echo '<hr>';// 2.用parse_url()函数中的参数获得字符串print_r(parse_url($url));echo '<br>';echo (parse_url($url)['query']),'<hr>';// 通过超全局变量用数组方式获得字符串$get = print_r(($_GET),true);echo "<pre>$get</pre><hr>";// 通过explode()函数把上面的字符串转为数组$gets = print_r(explode('&',$_SERVER['QUERY_STRING']),true);echo "<pre>$gets</pre><hr>";// 通过parse_str()函数把字符串转为数组parse_str($_SERVER['QUERY_STRING'],$getss);$gget = print_r($getss,true);echo "<pre>$gget</pre>";

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

base64()函数:直接解码并输出优点在于可以减少 http 请求次数和网络消耗,缺点是如果原图的位置或大小做了修改那么就不能正常输出了
// md5_file()函数:查看文件是否被更新过// 创建了一个文件里面有0710.md的唯一编码file_put_contents('md5.txt',md5_file('0710.md'));// 判断文件是否有做更改echo (md5_file('0710.md') === file_get_contents('md5.txt')) ? '文件没有更改' : '文件已更改';



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

可通过追加方式加入数据
$arr = [['id'=>1, 'name'=>'小明', 'sex'=>'男'],['id'=>2, 'name'=>'小红', 'sex'=>'女'],['id'=>3, 'name'=>'小花', 'sex'=>'女'],];printf('<pre>%s</pre>',print_r($arr,true));// 通过键访问值echo $arr[2]['name'];

遍历数组
$arrs = ['id'=>7, 'name'=>'小明', 'sex'=>'男', 'age'=>19,'nation'=>'中国'];// 手动遍历// key():获取指针当前位置的数组元素的键(key)// current():获取指针当前位置数组元素的值(value)printf("['%s'] => %s<hr>",key($arrs), current($arrs));// 指针后移next($arrs);printf("['%s'] => %s<hr>",key($arrs), current($arrs));next($arrs);printf("['%s'] => %s<hr>",key($arrs), current($arrs));// 指针前移prev($arrs);printf("['%s'] => %s<hr>",key($arrs), current($arrs));// 指针移到最后一个end($arrs);printf("['%s'] => %s<hr>",key($arrs), current($arrs));// 指针移动到第一个reset($arrs);printf("['%s'] => %s<hr>",key($arrs), current($arrs));

reset($arrs);while (true){printf("['%s'] => %s<br>",key($arrs), current($arrs));if(next($arrs));else break;}
reset($arrs);for ($a = 0;$a < count($arrs);$a++){printf("['%s'] => %s<br>",key($arrs), current($arrs));next($arrs);}
foreach ($arrs as $key=>$value){echo "['$key'] => $value<br>";}
$arr = ['id'=>7, 'name'=>['小明','小花','小红'], 'sex'=>'男', 'age'=>19,'nation'=>'中国'];foreach($arr as $key=>$value){// echo "['$key'] => $value<br>";echo is_array($value) ?"['$key'] =>" .print_r($value,true):"['$key'] => $value",'<br>';}

// 创建数组$arr = [];$arr[] = ['id'=>10, 'name'=>'小明', 'sex'=>'男'];$arr[] = ['id'=>20, 'name'=>'小花', 'sex'=>'女'];$arr[] = ['id'=>30, 'name'=>'小红', 'sex'=>'女'];// 1.内部再次foreachforeach($arr as $v){foreach($v as $key => $value){echo "['$key'] => $value<br>";}}echo '<hr>';// 2.用printf()函数foreach($arr as $value){printf("学号:%s , 姓名:%s , 性别:%s<br>",$value['id'],$value['name'],$value['sex']);}echo '<hr>';// 3.list()解构遍历list('id'=>$id,'name'=>$name,'sex'=>$sex) = ['id'=>10, 'name'=>'小明', 'sex'=>'男'];echo "{$id} <br> {$name} <br> {$sex} <br>";foreach($arr as list('id'=>$id,'name'=>$name,'sex'=>$sex)){printf("学号:%s , 姓名:%s , 性别:%s<br>",$id,$name,$sex);}echo '<hr>';// 4.foreach遍历对象属性$obj = new stdclass;$obj->name = 'admin';$obj->role = '管理员';$obj->email = 'admin@qq.com';foreach($obj as $p=>$v){echo "['$p']=>$v<br>";}

总结
1.对于还有很多字符串函数需要自行查看手册并了解和测试使用
2.对于数组有一个初步的认识
3.数组遍历方式需要熟记并多去敲代码,以便掌握。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号