PHP函数
自定义函数
可重复执行的代码段
function 函数名(参数,....){
return 返回值;
}
函数可以带有0个或多个参数,参数之间用逗号连接,参数的数据类型可以是任意。
一般情况下,必须参数在前面,可选参数(有默认值的参数)在后面
返回值:函数可以存在返回值,默认返回值是null;返回值类型可以为任意,
return将终止函数的执行
形参和实参:
形参是在定义函数的时候定义的。实参是在调用函数的时候传递的。
函数的参数传递:
默认值传递:在定义形参的时候,给定默认值
按值传递:将实参的值赋值给形参,在函数内部的操作是对形参进行的,操作完成后,不会影响到实参
引用传递:将实参的内存地址传递给形参,在函数内部的操作会影响到实参的值,在传值的时候,前面加上&
变量函数
函数的调用是通过变量的值来实现的。通过在变量后面加上一对小括号来调用(PHP会自动搜索与变量名相同的函数,并且执行)
递归函数
函数调用自身
function fun1(){
fun1();
}
PHP中的函数库:基础函数库
自定义函数的函数库:
func_get_args();//返回函数的参数所组成的数组
func_num_args()//返回函数的参数的数量
function_exists()//检测函数是否定义过(存在),返回值布尔类型
*call_user_func($func_name,$argments):
*call_user_method($method_name,$obj,$argments)
func_get_arg($num)//返回函数的某个参数的值
字符函数库:
trim():用于去除字符串首尾的空白字符,并返回处理后的字符串
ltrim():
rtrim()
str_shuffle():随机打乱字符串
substr():截取字符
substr($str,$start,$length)
第一个参数:要操作的字符串
第二个参数:起始位置,默认从0开始,可以为负数(从后往前(-1)计数)
第三个参数:截取长度,默认截取到结束位置,可以为负数(从后往前计数),截取的是起始位置到计数位置之间(不包含)的字符串
#strip_tags():去掉HTML和PHP标记
strlen($str):返回字符串的长度
strtoupper()
strtolower()
ucfirst():首字母大写
ucwords():单词首字母大写
str_replace($need,$replace,$str):字符替换,区分大小写
str_ireplace():不区分大小写的替换
strpos($str,$need):返回字符串在另外一个字符串中第一次出现的位置,区分大小写
stripos():不区分大小写
strrpos():返回字符串在另外一个字符串中最后一次出现的位置,区分大小写
strripos():不区分大小写
strrev():字符串反转
str_split():字符串转换成数组
#addslashes():对字符串中的特殊字符进行转义
#stripslashes():对转义后的字符串进行反转义
#htmlspecialchars($str):字符串中的特殊字符转成HTML实体
#strstr()
#strchr()
mb_substr($str,$start,$length,$code)//中文截取,$code是编码方式
数学函数库:
ceil($num)
floor()
min()
max()
pow($base,$exp)
sqrt()
round($num,$length):
rand($min,$max):产生随机数
mt_rand($min,$max):产生更好的随机数
md5():md5加密
sha1():
base64_encode()
base64_decode()
number_format():字符串的格式化
number_format($num):格式化后会四舍五入小数点后的值,且每一千以(,)分隔
number_format($num,$decimal_places):格式化后会到小数点后第几位,且每一千以(,)分隔
number_format($num,$decimal_places,$dec_replace,$douhao_replace)
$dec_replace用来替换小数点(.);$douhao_replace用来替换逗号(,)
数组函数库
count($arr):返回数组的成员数量//sizeof()
foreach(){}
explode($limiter,$str):字符串转换成数组
implode($glue,$arr):数组转换成字符串
array_search($need,$arr):在数组中查找给定的值,找到的话返回其下标,否则返回false
array_pop():删除数组中最后一个元素(尾部删除),返回值是被删除的元素
array_push($arr,$value):数组尾部追加新的元素,返回值是新的数组的长度
array_shift():头部删除
array_unshift():头部追加
array_unique():数组去重
array_keys($arr):返回一个由原来数组的下标(键名)组成的数组
array_values($arr):返回一个由原来数组的键值组成的数组
array_reverse():数组反转
array_merge($arr,$arr1);数组合并
array_combine($keys,$values);创建一个数组,用一个数组的值作为键名,另外一个数组的值作为键值。操作的这2个数组长度一定要一致
array_diff($arr1,$arr2):对比返回在arr1中但是不在arr2中的值
array_key_exists($key,$arr)
array_rand($arr):从数组中取出一个或多个随机的元素,并且返回随机元素的一个或多个的键名(下标)
array_splice():
join()
in_array($need,$arr):检测指定的值是否在数组中出现过,返回值是布尔类型
reset($arr):数组内部指针重置
next($arr):数组内部指针向下移动一个
prev($arr):数组内部指针向上移动一个
end($arr):数组内部指针移动到最后一个
current($arr):返回当前指针
日期时间函数库
date_default_timezone_get()//获取默认时区
date_default_timezone_set($string)//设置默认时区 Asia/Chongqing Aisa/Shanghai
time():获取当前的unix时间戳;返回值是从unix纪元(格林威治时间1970.1.1零点)到当前时间的秒数
date($format,$time):格式化时间戳,返回值是当前的日期和时间
$format定义:常用格式
Y:四位年
y:两位年
m:两位月
n:一位月
d:两位日期
j:一位日期
H:两位的小时
i:两位分
s:两位秒
w:每个星期的第几天,0-6,0为星期日
strtotime($date);将时间解析成时间戳
microtime():获取毫米级别的时间戳,
练习:
1.实现0-9纯数字加解密
2.实现如何获取一个文件的后缀名?
3.写一个新闻数组?(包含3条新闻,每条新闻有标题,简介,作者,时间,点击量)
4.$str = "conTRoller_FUnCtion_zeND"?通过程序格式化成Controller_Function_Zend
PHP高级函数库
1.会话控制(会话变量)
COOKIE,SESSION
COOKIE:是一种在远程浏览器端存储数据并以此来跟踪和识别用户(信息)的机制。
特点:在服务器端创建,在浏览器端保存;跨页面访问;不安全
作用:记录用户的操作信息;在页面之间传递变量(数据);可以提高执行效率(用户浏览速度)
创建:setcookie($name,$value,$expire,$path,$domain,$safe)
name:变量名
value:变量的值
expire:过期时间,单位是秒,是标准的unix纪元时间标记;time()+3600
如果没有指定过期时间,那么当浏览器关闭时,自动过期(失效)
path:服务器上能够接收会话变量的目录路径;默认是当前路径;一般用根路径(/)
domain:有效的域名(www.xiaobai.com,user.xiaobai.com,pay.xiaobai.com),设置成xiaobai.com
safe:是否通过安全链接;0普通链接(http),1安全链接(https)
访问(读取):
$_COOKIE['变量名']
删除:不能用unset($_COOKIE['变量名']);
setcookie($name,'',time()-3600,$path,$domain,$safe)
注意:浏览器最多存储300个cookie文件,每个文件大小都有限制,每个域名下面最多有限制(20个);达到限制时,浏览器会自动随机删除。
SESSION:把数据存到session文件中,保存在服务器端;文件的名称保存在cookie中
特点:在服务器端创建,在服务器端保存,跨页面访问,安全。
php.ini中相应的配置:
session.save_path = '';//指定文件的存放目录
session.cookie_lifetime = 0;//关闭浏览器,cookie失效
session.gc_maxlifetime= 1440;//最大有效期
创建:
session_start();//开启session
$_SESSION['变量名'] = 值;
session_id();//获取session的id值
session_id($value);//设置值
访问:
session_start();
$_SESSION['变量名']
删除:
session_start();
unset($_SESSION['变量名']);释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的sessionid
session_destory();删除当前用户对应的session文件以及释放sessionid,内存中的$_SESSION变量内容依然保留
2.GD函数库(处理图片)
php.ini配置文件中开启gd2: extenstion=php_gd2.dll
在处理图片的php文件中,顶部要加入:
header('content-type:image/png');
创建画布:
$image= imagecreate($width,$height);//返回值是一个resource
$image= imagecreatetruecolor($width,$height);
$color= imagecolorallocate($image,$red,$green,$blue);//产生颜色0-255
imagefill($image,$x,$y,$color)
生成图片:
imagepng($image,$filename)
imagejpeg()
imagegif()
从已存在的图片创建一个画布:
imagecreatefrompng($filename)
imagecreatefromjpeg($filename)
imagecreatefromgif($filename)
imagechar($image,$font,$x,$y,$c,$color)//写英文(单个字符,横着书写)
图片资源,大小,X轴坐标,Y轴坐标,字符,颜色
imagecharup($image,$font,$x,$y,$c,$color)//写英文,竖着书写,单个字符
imagestring($image,$font,$x,$y,$string,$color)//写多个字符,横着书写
imagestringup($image,$font,$x,$y,$string,$color)//多个字符,竖着书写
imagefttext($image,$size,$angle,$x,$y,$color,$fontfile,$text)
倾斜角度 字体文件的路径
imagesetpixel($image,$x,$y,$color)//画点
imageline($image,$x1,$y1,$x2,$y2,$color)//画线
imagerectangle($image, $x1, $y1, $x2, $y2, $color)//画矩形,不填充
左上角坐标,右下角坐标
imagefilledrectangle($image, $x1, $y1, $x2, $y2, $color)//画矩形,填充
imageellipse($image, $cx, $cy, $width, $height, $color)//画圆,不填充
圆心坐标,水平直径,垂直直径
imagefilledellipse($image, $cx, $cy, $width, $height, $color)//画圆,填充
imagearc($image, $cx, $cy, $width, $height, $start, $end, $color)//画圆弧(扇形)
起始弧度,结束弧度
imagefilledarc($image, $cx, $cy, $width, $height, $start, $end, $color,$style)//换圆弧,填充
$style:填充类型
0:填充为扇形,1:填充三角形,2:显示两点间的圆弧,3:显示两点间的斜线
imagecopy($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w,$src_h)//拷贝
目标图片,被拷贝的图片,放到目标图片的起始位置的坐标,从被拷贝的图片的什么位置开始拷贝,拷贝的宽高
imagecopyresized($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y,$dst_w, $dst_h, $src_w, $src_h)//缩略
目标图片,被拷贝的图片,放到目标图片的起始位置的坐标,从被拷贝的图片的什么位置开始拷贝,目标图片的宽高,拷贝的宽高
$arr =getimagesize($filename)//获取图片的基本信息(类型,宽,高)
$arr['mime']:type类型
$arr[0]:宽
$arr[1]:高
练习:1.将image文件夹中的图片缩略成200*200的图片
2.产生一个6位随机验证码(加入干扰元素),每个字符带倾斜角度(不一样),颜色随机
PHP复习
变量的定义
数据类型
数据转换
运算符
语句
自定义函数
PHP中基础函数库
PHP中高级函数库
1.会话控制
COOKIE,SESSION
2.GD库
3.文件及目录操作