PHP学习笔记Word下载.docx
《PHP学习笔记Word下载.docx》由会员分享,可在线阅读,更多相关《PHP学习笔记Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
![PHP学习笔记Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/5/117f90ef-30b1-4766-9906-363d80cccd4f/117f90ef-30b1-4766-9906-363d80cccd4f1.gif)
函数体内也可以调用PHP内置函数或者其它自动以函数。
示例:
自定义一个函数,该函数实现的功能是计算n的阶乘。
代码如下:
<
?
php
functionnRecursion($n){
$s=1;
for($i=1;
$i<
=$n;
$i++){
$s=$s*$i;
}
return$s;
var_dump(nRecursion(4));
//调用函数输出:
int(24)
>
2.函数的调用方法
在PHP中,可以直接使用函数名进行函数的调用。
如果函数带有参数,调用时需要传递相应参数。
调用系统内置函数和自定义函数的方法都是相同的。
语法如下:
function函数名([参数1,参数2,参数3……]);
以下调用函数round()的示例,round()是PHP内置函数,其语法格式如下:
floatround(float$var[,int$precision])
该函数的功能、参数和返回值的含义:
●功能:
实现对浮点数进行四舍五入的功能,并可以指定从浮点数的位置开始进行四舍五入。
●参数:
该函数有两个参数,分别是var和precision。
参数的含义是从浮点数var的第precision个长度的位置开始进行四舍五入。
中括号标识可选参数。
●返回值:
该函数返回值的类型是float型。
$floatNumber=725.386;
echo"
原浮点数为:
"
.$floatNumber."
br/>
;
$result1=round($floatNumber);
//725
从小数点处进行四舍五入的结果为:
.$result1."
$result2=round($floatNumber,2);
//725.39
从小数点后两位处进行四舍五入的结果为:
.$result2."
$result3=round($floatNumber,-2);
//700
从小数点前两位处进行四舍五入的结果为:
.$result3;
如果调用一个不存在或错误的函数,系统报错,可根据报错信息进行排错。
●检查该函数是否正确存在与PHP文件中。
●检查函数名称拼写是否正确。
●还有可能是所调用的函数是PHP扩展的一部分,而该部分并没有被载入。
2、函数的返回值
函数成功执行后,可通过return语句将结果返回给函数外部。
函数返回值可以使任何数据类型,也可以是数组或者对象。
若不需要返回值,则可省掉return语句。
1.单一返回值
使用return语句可以且只能返回一个值,在return语句执行后,整个函数的运行终止。
以下是通过函数计算两个数乘积并返回其结果的例子,代码如下:
functionmultiplication($a,$b){
$result=$a*$b;
return$result;
3*10="
.multiplication(3,10);
2.多返回值
如果需要函数返回多个值时,可以通过数组的形式来得到多个返回值。
示例如下:
functionnumber(){
Returnarray(1,2,3);
list($one,$two,$three)=number();
//list函数把数组中的值赋给一些变量
$one是"
.$one."
$two是"
.$two."
$three是"
.$three."
3、函数的重要元素——参数
所谓参数,就是在函数声明的圆括号内的变量或常量,同通过参数向函数传递信息。
1.参数的声明方式
参数是一个用逗号作为分隔符的表达式列表,如果参数不存在则参数列表为空。
在PHP中,声明参数时不需要指定该参数的数据类型,它可以自动识别变量类型,然后对其做相应操作。
比如,以下函数可以计算两个数的最大公约数,在声明时只需在括号内定义两个变量即可。
functiondivisor($m,$n){
if($m%$n==0){
return$n;
}else{
returndivisor($n,$m%$n);
$a=12;
$b=8;
$result=divisor($a,$b);
echo$a."
和"
.$b."
的最大公约数为:
.$result;
//12和8的最大公约数为:
4
2.参数的默认值
PHP中允许将参数定义成C++风格的默认值,也就是说允许实参与形参个数不同,实现的方法是在形参列表中对一个或几个形参指定默认值,该默认值必须为常量表达式。
默认参数必须放在非默认参数的右侧,否则可能会得到与预期不同的执行结果。
比如,程序中参数b含有默认值,而参数a和c没有默认值,代码如下:
functionprintVar($a,$b=10,$c){//默认参数$b没在非默认参数右侧,故报错
a=$ab=$bc=$c"
$a=1;
$c=3;
echoprintVar($a,$c);
【PHP中不带可以使用数值类型作为默认参数,还允许使用数组,特殊类型NULL做默认参数。
】
3.参数的两种传递方式—值传递和引用传递
在PHP中,参数有两种传递方式,分别是值传递和引用传递。
值传递是将要传递的值作为一个副本进行传递;
而引用传递则是引用对象的内存地址。
1 值传递
参数在调用函数前后不发生改变,传给函数的只是这个参数的值。
即在传递参数时函数范围内对这些值的改变都在函数外被忽略掉。
PHP中除对象类型外,其它类型的参数传递方式都是值传递。
下面是一个使用值传递方式来增加变量的示例,代码如下:
functionchange($number){
$number=$number+1;
//是变量$number的值增加1
函数内部\$number的值为:
.$number."
//内部变量11
$number=10;
change($number);
//调用change()函数
函数外部\$number的值为:
.$number;
//显示函数外部变量$number
2 引用传递
如果要在函数内部修改参数值,且函数的外部也能同时改变该参数值,可以使用引用传递。
引用传递参数的方式为在参数前面添加“&
”符号。
在引用传递方式中,当参数传给函数时,函数不会再创建一个新变量,而是直接获得一个原有变量的引用。
可以像使用其他变量一样使用引用变量,其区别在于:
不是获得变量本身的值,而是指向原来的值。
任何对该引用的修改都会影响到原始变量值。
下面是一个通过引用传递来增加变量值的示例,代码如下:
在函数内部\$number的值为:
//显示内部值11
chang(&
$number);
//调用chang()函数
在函数外部\$number的值为:
.$nubmer;
//显示外部$number的值11
4、函数的作用域
PHP中,函数的作用域用来控制函数及函数中变量在哪里是可见并且可用的。
不同的编程语言有不同的变量作用域规则,PHP中的函数及函数中的变量作用域规则如下:
●函数的作用域指在函数内部声明的变量作用域是从声明的那条语句开始是到函数的末尾。
●全局作用域指在函数外部声明的变量作用域是从那条语句开始到声明所在的文件末尾。
●使用关键字global或$GLOBALS[]数组可以手动指定一个函数中使用的变量为全局变量。
●通过参数列表传递给函数的变量,对于函数来说是局部变量,但是在传递时带有引用符号(&
)的除外。
●可以使用unset()函数手动删除一个变量,该变量也在其作用域内同时被销毁。
●使用require()和include()这两个函数并不会影响到作用域。
如果它们用于函数内部,则函数作用域适用。
如果它们不在函数内部,则全局作用域适用。
示例代码如下:
<
$price=0;
//定义全局变量
functionsale($price){
$price=100;
//定义局部变量
$newPrice=$price*0.95;
//促销商品为9.5折
商品的原价为:
.$price."
return$newPrice;
//返回变量$newPrice的值
商品的折扣价为:
.sale($price)."
.$price;
?
5、变量函数
PHP支持变量函数的概念,如果一个变量名称的后面带有圆括号,例如:
$var()、$variable()等,虽然这些变量名称并不是一个合法的函数名称,但是类似的函数调用却可以正确执行。
因为PHP可以去除保存在$var变量中的值,在程序中寻找相同名称的函数,然后尝试调用执行该函数,这就是变量函数的工作原理。
下面是一个使用变量函数实现计算某长方形面积的功能,代码如下:
functioncaculate($length,$width){
$area=$length*$width;
长方形的长为:
.$length."
长方形的宽为:
.$width."
长方形的面积为:
.$area."
$length=10;
$width=5;
$myFunction="
caculate"
$myFunction($length,$width);
变量函数的优点是可以增加程序的灵活性,但是滥用变量函数会降低PHP代码的可读性,使程序逻辑变得难以理解,为代码的维护带来极大的困难,甚至可以引发一系列的安全问题。
所以在编程中应该尽量少用或者避免使用变量函数。
6、PHP内置函数
PHP内置函数非常丰富,涉及到Web开发的各个方面。
如:
工具函数、数学函数、日期函数、文件包含函数等。
1.工具函数
主要指一些在开发过程中经常使用的函数,它们很具通用性。
exit()函数可以终止程序运行,empty()可以检测变量是否为空值等,都统称为工具函数。
(1)die()和exit()
其实die()和exit()两个函数在PHP中指向的是同一个函数,die()是exit()函数的别名。
函数exit()语法如下:
voidexit([string$status])
如果参数status是字符串,则该函数会在退出前输出字符串;
如果参数status是整数,这个值会被用作退出状态。
退出状态的值在0~254之间,状态0用于成功终止程序。
exit()函数没有返回值。
下面是使用exit()函数提前中止函数的示例,代码如下:
$var="
PHP开源技术"
echo$var;
exit(0);
//终止函数,其后的部分不被执行
这句话没有执行"
//仅输出:
PHP开源技术
(2)empty()
empty()函数用于检查是否为0值或者空值,如果变量为0或者空值则返回true,否则返回false。
使用false。
使用该函数检测变量时,在“”、0、“0”、NULL、FALSE、array()、$var等情况下都将被认为是空的。
其语法格式如下:
boolempty(mixed$var)
参数var用来指定要检测的变量名称。
下面是empty()函数的示例,代码如下:
PHP笔记"
if(empty($var)){//判断变量$var是否为空值
\$var为0或者空值<
\$var的值为\"
.$var."
\"
$null="
if(empty($null)){//判断变量$null是否为空值
\$null为0或者空值<
\$null的值为\"
.$null."
$zero=0;
if(empty($zero)){//判断变量$zero是否为空值
\$zero为0或者空值<
\$zero的值为\"
(3)iset()和unset()
isset()函数使用于检测是否已经为变量设定值,如果改变量已经设定值则返回true,否则返回false。
其语法如下:
boolisset(mixed$var);
unset()函数用于将已经被赋值的变量删除,使改变量成为一个没有赋值的变量,该函数的返回值永远为true,其语法格式如下:
voidunst(mixed$var)
下面是使用isset()函数提前终止函数的示例,代码如下:
$var1=$variable;
$var2=null;
if(isset($var1)){
\$var1和\$var2已经被设定值"
\$var1和\$var2没有被设定值"
(4)settype()
settype()函数是用来设置变量类型的,如果设置变量成功该函数会返回true,否则返回false。
settype()函数的语法格式为:
boolsettype(mixed&
$var,string$type)
●var:
指定需要设置数据类型的变量名称。
●type:
指定需要设置的数据类型,该参数可取值如下:
参数值
说明
boolean
表示布尔类型
integer
表示整型
float
表示浮点型
string
表示字符串类型
array
表示数组类型
object
表示对象类型
null
表示空
下面是使用settype()函数为变量设置数据类型的示例,代码如下:
$php="
PHP技术"
\$php的原值为:
.$php."
settype($php,"
integer"
);
\$php的新值为:
.$php;
(5)is_bool()
is_bool()函数可用来检测某变量是否为布尔型,如果变量为布尔类型时该函数会返回true,否则返回false,其语法格式为:
boolis_bool(mixed$var)
参数var用来指定需要检测的变量名称。
下面是使用is_bool()函数来检测变量是否为布尔类型的示例,代码如下:
$php=true;
if(is_bool($php)){
\$php是布尔型的"
\$php不是布尔类型的"
与is_bool()函数类似,PHP变量函数库中还提供了许多以“is_”为前缀的其它数据类型检测函数,例如:
要检测某变量是否为字符串类型时,可以使用is_string()函数;
而要检测某变量是否为浮点数类型时,可以使用if_float()函数。
2.数学函数
数学函数主要用来进行长整型和浮点型数据的计算,在函数中使用的数据精度不能超过长整型和浮点型这两个范围。
PHP中常用的数学函数如下表。
在使用数学函数时,只要弄清函数的作用和参数,就可以灵活地使用这些PHP自带函数进行各种数学运算。
PHP常用数学函数
函数格式
功能描述
mixedabs(mixed$number)
求参数number的绝对值
floatacos(float$arg)
求参数arg余弦值所对应的弧度值
floatcos(float$arg)
求参数arg的余弦值
floatasin(float$arg)
求参数arg正弦值所对应的弧度值
floatsin(float$arg)
求参数arg的正弦值
floatatan(float$arg)
求参数arg正切值所对应的弧度值
floatatan2(float$y,float$x)
同atan()相似,按输入参数的的正负决定输出值所在象限
floattan(float$arg)
求参数arg的正切值
stingbase_convert(string$number,int$frombase,int$tobase)
求number的基数从frombase转换为tobase
intbindec(string$binary_string)
将二进制转换为十进制
stringdecbin(int$number)
将十进制转换为二进制
inthexdec(string$hex_string)
将十六进制字符串转换为十进制整数
intoctdec(string$octal_string)
将八进制字符串转换为十进制整数
stringdechex(int$number)
将十进制整数转换为十六进制字符串
stringdecoct(int$number)
将十进制的整数转换为八进制字符串
floatexp(float$arg)
计算指数为arg,底数为E的幂
floatpow(float$base,float$exp)
计算底数为base,指数为exp的幂
intfloor(float$number)
返回小于等于number的最大整数
doubleround(double$val[,int$precision])
将val四舍五入
intceil(float$number)
返回大于等于number的最小整数
intgetrandmax(void)
返回rand()函数能产生的最大随机数
intrand([int$min],[int$max])
产生一个在min和max之间的随机数
voidsrand(int$seed)
用整数seed给随机数产生器设置启动源
floatlog(float$arg)
以E为底计算arg的对数
floatlog10(float$arg)
以10为底计算arg的对数
mixedmin(mixed$arg1,mixed$arg2,mixed$argn)
计算所给参数中的最小值
mixedmax(mixed$arg1,mixed$arg2,mixed$argn)
计算所给参数中的最大值
stringnumber_format(float$number,int$decimals,string$dec_point,string$thousands_sep)
将浮点数number按格式输出
doublepi(void)
返圆周率值
floatsqrt(float$arg)
返回arg的平凡根
下面是部分数学函数的应用示例,代码如下:
$float=7.16;
Echo"
\$float的值为:
.$float."
//$float的值为:
7.16
四舍五入取整数为:
.round($float)."
//四舍五入取整数为:
7
去尾取整数为:
.floor($float)."
//去尾取整数为:
进位取整数为:
.ceil($float)."
//进位取整数为:
8
$int=1234;
\$int的值为:
.$int."
//$int的值为:
1234
转换成十六进制的值为:
.dechex($int)."
//转换成十六进制的值为:
4d2
转换成八进制的值为:
.decoct($int)."
//转换成八进制的值为:
2322
转换成二进制的值为:
.decbin($int)."
//转换成二进制的值为:
10011010010
注:
在PHP中提供两种方法可以获取圆周率的值,他们分别为:
●使用数学常量M_PI来表示圆周率。
●使用pi()函数来表示圆周率。
3.日期函数
日期函数中定义了有关日期的所有相关函数,通过这些函数可以进行日期的修改、更新与、格式化输出。
(1)time()
time()函数可以用来获取当前的时间戳,其中时间戳是指从公元1970年1月1日开始到当期那时间的秒数。
time()函数能够以整型形式返回当前的UNIX时间戳,其语法格式如下:
in