数组与数组常用函数
一、字符串常用函数
URL处理函数
<?php
//URL处理函数
//http://php.edu/070/demo1.php?id=1&name=张三
//print_r($_GET);
print_r($_SERVER['QUERY_STRING']);
echo '<br>';
//parse_str();将字符串解析成变量
parse_str($_SERVER['QUERY_STRING'],$array);
print_r($array);
echo '<br>';
// parse_url函数用于解析整个URL,并返回其组成部分
print_r(parse_url('http://php.edu/070/demo1.php?id=1&name=admin'));
二、编码
1.base64_encode():将二进制数据进行编码后加密传输
```
//base64_encode():将二进制数据进行编码后加密传输,图片
$img = base64_encode(file_get_contents(‘1.jpg’));
echo $img;
```
- 输出图片
<?php
echo "<img src=\"data:image/jpeg;base64,{$img}\">";
2. file_put_contents() 函数把一个字符串写入文件中
<?php
file_put_contents('123.jpg',base64_decode($img));
echo "<img src=\"123.jpg\">";
3.md5函数
<?php
echo md5('1234'),'<br>';//返回一个32位的字符串
echo sha1('1234'),'<br>';//返回一个40位的字符串
echo md5(sha1(md5('1234')));
<?php
//md5_file():只要这个文件被更新过,它的返回值就会发生变化
echo 'demo1.php的md5 = ' . md5_file('demo1.php') . '<br>';
file_put_contents('md5file.txt',md5_file('demo1.php'));
if(md5_file('demo1.php') === file_get_contents('md5file.txt')){
echo '文件没有更新过';
}else{
echo '文件已经被修改过';
}
三、数组
1.索引数组
<?php
$arr = ['中国','俄罗斯','巴基斯坦'];
printf('<pre>%s</pre>',print_r($arr,true));
2.关联数组
//关联数组,键的类型是字符串
$arr = ['姓名'=>'张三','年龄'=>20,'性别'=>'男','身高'=>170];
//关联数组的元素访问与数组中的位置无关,只与它的键名相关
printf('<pre>%s</pre>',print_r($arr,true));
3.数组的创建:以追加的方式创建数组
<?php
$arr = [];
$arr[] = '诸葛亮';
$arr[] = '刘备';
$arr[] = '关云长';
$arr[] = '张飞';
printf('<pre>%s</pre>',print_r($arr,true));
$arr = [];
$arr['军师'] = '诸葛亮';
$arr['主公'] = '刘备';
$arr['前将军'] = '关云长';
$arr['车骑将军'] = '张飞';
printf('<pre>%s</pre>',print_r($arr,true));
4.多维数组
$arr = [
0=>['姓名'=>'张三','年龄'=>20,'性别'=>'男'],
1=>['姓名'=>'王红','年龄'=>21,'性别'=>'女'],
2=>['姓名'=>'刘淑安','年龄'=>20,'性别'=>'女'],
];
printf('<pre>%s</pre>',print_r($arr,true));
5.数组的遍历
- 用指针逐个遍历
<?php
//数组的遍历
//1.使用数组指针逐个遍历
$arr = ['姓名'=>'张三','年龄'=>'25','性别'=>'男','身高'=>'170','体重'=>'130'];
//current():获取指针当前位置的数组元素的值value
//key():获取指针当前位置的数组元素的键key
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
next($arr);//指针下移
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
next($arr);
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
next($arr);
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
next($arr);
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
prev($arr);//指针前移
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
end($arr);//指针移到最后一个元素的位置
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
reset($arr);//指针复位,指针回到第一个元素的位置
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
- 用while循环来遍历数组
//用循环来实现遍历
while(true){
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
if(next($arr)) continue;
else break;
}
- 用for循环遍历数组
//for循环
reset($arr);
for($i = 0;$i < count($arr);$i++){
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
next($arr);
}
- foreach循环遍历数组
//foreach循环
foreach($arr as $key => $value){
echo "['{$key}'] => $value <br>";
}
- 二维数组的遍历
//二维数组的遍历
$arrs = [
['姓名'=>'刘莉','性别'=>'女','年龄'=>'20'],
['姓名'=>'周平','性别'=>'男','年龄'=>'22'],
['姓名'=>'王苒','性别'=>'女','年龄'=>'19']
];
foreach($arrs as $value){
foreach($value as $key => $arr){
echo "['{$key}'] => $arr<br>";
}
}
echo '<hr>';
foreach($arrs as $value){
printf('姓名=%s,性别=%s,年龄=%s<br>',$value['姓名'],$value['性别'],$value['年龄']);
}
- list()解构/解析遍历数组
//list()解构/解析:索引数组
list($a,$b,$c)=[1,2,3];
echo $a,$b,$c;
echo '<hr>';
//list()解构/解析:关联数组
list('a' => $a,'b' => $b,'c' => $c)=['a' => 1,'b' => 2,'c' => 3];
echo $a,'===>',$b,'===>',$c;
echo '<hr>';
foreach($arrs as list('姓名'=>$name,'性别'=>$sex,'年龄'=>$age)){
printf('姓名=%s,性别=%s,年龄=%s<br>',$name,$sex,$age);
}
- foreach遍历对象
$obj = new stdClass;
$obj ->name ='孙悟空';
$obj ->sex ='男';
$obj ->age ='1000';
foreach ($obj as $key => $value){
echo "$key => $value<br>";
}
学习总结
1.url处理函数
parse_url函数用于解析整个URL,并返回其组成部分
parse_str();将字符串解析成变量
2.编码
base64_encode():将二进制数据进行编码后加密传输
file_put_contents() 函数把一个字符串写入文件中
md5()sha1()加密函数
3.数组
索引数组,默认键值从0开始
关联数组,键值是字符串
next();指针下移 prev();指针前移 end();指针移到最后的位置 reset();指针复位
current():获取指针当前位置的数组元素的值value
key():获取指针当前位置的数组元素的键key
continue命令会终止循环体的单次循环,代码并继续往下执行下去
break会终止循环体的遍历
while循环遍历数组
while(true){
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
if(next($arr)) continue;
else break;
}
for循环遍历数组
for($i = 0;$i < count($arr);$i++){
printf('[\'%s\'] => %s<br>',key($arr),current($arr));
next($arr);
}
foreach循环遍历数组
foreach($arr as $key => $value){
echo "['{$key}'] => $value <br>";
}
foreach循环遍历二维数组
foreach($arrs as $value){
foreach($value as $key => $arr){
echo "['{$key}'] => $arr<br>";
}
}
foreach($arrs as $value){
printf('姓名=%s,性别=%s,年龄=%s<br>',$value['姓名'],$value['性 别'],$value['年龄']);
}
list()解构/解析遍历数组
foreach($arrs as list('姓名'=>$name,'性别'=>$sex,'年龄'=>$age)){
printf('姓名=%s,性别=%s,年龄=%s<br>',$name,$sex,$age);
}