字符串函数
1.url 函数(获得 get 请求中的字符串)
可以用\$_SERVER 获得 URL 中 GET 请求中的字符串
用 parse_url()函数中的参数获得字符串
通过超全局变量用数组方式获得字符串
通过 explode()函数把上面的字符串转为数组
通过 parse_str()函数把字符串转为数组
$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>";
2.base64_encode()函数:将二进制数据进行编码后加密传输(图片,视频之类)
// 加密编码图片
$img = base64_encode(file_get_contents('hasaki.jpg'));
// 解码输出图片
echo <<<IMG
<img src="data:image/jpeg;base64,{$img}">
IMG;
base64()函数:直接解码并输出优点在于可以减少 http 请求次数和网络消耗,缺点是如果原图的位置或大小做了修改那么就不能正常输出了
3.md5_file()函数:查看文件是否被更新过
// 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'];
遍历数组
1.手动遍历
$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));
2.循环遍历(自动)
- 1.while循环
reset($arrs);
while (true){
printf("['%s'] => %s<br>",key($arrs), current($arrs));
if(next($arrs));
else break;
}
- 2.for循环(不推荐)
reset($arrs);
for ($a = 0;$a < count($arrs);$a++){
printf("['%s'] => %s<br>",key($arrs), current($arrs));
next($arrs);
}
- 3.foreach循环(不需要指针复位,指针会自动后移)
foreach ($arrs as $key=>$value){
echo "['$key'] => $value<br>";
}
- 4.遍历二维数组
$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>';
}
直接取值
- 1.内部再次foreach
- 2.用printf()函数
- 3.list()解构遍历
- foreach遍历对象属性
// 创建数组
$arr = [];
$arr[] = ['id'=>10, 'name'=>'小明', 'sex'=>'男'];
$arr[] = ['id'=>20, 'name'=>'小花', 'sex'=>'女'];
$arr[] = ['id'=>30, 'name'=>'小红', 'sex'=>'女'];
// 1.内部再次foreach
foreach($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.数组遍历方式需要熟记并多去敲代码,以便掌握。