PHP函数
什么是函数
函数是用来完成某种特定任务的可重用代码块;
函数可以使程序更具模块化,拥有良好的结构;
函数定义后在程序中可以重复调用;
函数分为内置函数和自定义函数
内置函数
PHP系统提供了大量功能强大的函数,帮助我们解决各种问题
创建自定义函数
function function_name(parameters) {
}
function sayhello(){
echo 'hello';
}
函数用function关键字来声明;
函数名称是由字母或下划线开始,中间可以包含数字;
函数名不区分大小写,不过在调用函数的时候,通常使用其在定义时相同的形式;
php不支持函数重载, 所以自定义函数不能和内置函数重名;
不能在一个文件中自定义同名的函数;
参数出现在括号中,如果有多个参数用逗号分隔;
传递参数
值传递(传值)
函数内对参数值的改变不会影响函数外部的值;
引用传递(传址)
有些情况下,可能希望在函数体内对参数的修改在函数体外也能反映;
使用引用传递参数要在参数前加上"&"符号;
变量本身传入,传入后的变量与原变量建立联系;
函数体内变量的变化,会影响到原变量本身;
默认参数值
可以为参数指定默认值,在没有提供其他值的情况下,则将默认值自动赋给该参数;
可选参数
可以指定某个参数为可选参数,这些参数需要放在参数列表的末尾,需且要指定其默认值为空;
如果指定了多个可选参数,可以选择性地传递某些参数;
function demo($name,$age = null){
echo '姓名:' . $name . ' 年龄:' .$age;
}
demo('李四');
从函数返回值
通常情况下,只依靠函数做某些事情还不够;
需要将函数的执行结果返回给调用者,这时可以使用 return 语句返回结果;
return 语句变执行后,将使得函数立即结束运行,并且将控制权返回被调用的行;
function mysquare($num)
{
if ($num == 4) {
return;
echo '1';
}
$res = $num * $num;
return $res;
}
echo mysquare(4);
递归函数
递归函数是一个可以重复调用自身的函数,直到满足某个条件为止;
递归函数常用来解决一些重复的问题;
递归应该特别注意条件,防止进入死循环中;
function demo($val)
{
if($val == 0 || $val == 1){
return 1;
}
return $val * demo($val - 1);
}
echo demo(3);
变量作用域和生命周期
由于引入了函数,程序中变量的能见度发生了变化,即变量的作用范围发生了改变;
变量分为:全局变量,局部变量,静态变量;
全局变量
函数体外定义的变量为全局变量,与局部变量相反,全局变量可以在程序的任何地方访问;
如果在函数体中需要使用全局变量,使用 global 关键字访问;
全局变量的作用域:从声明它的那条语句开始到文件末尾;
$test = 'test';
function demo(){
global $test;
echo $test;
}
demo();
局部变量
局部变量:只存在于对它做出声明的函数内部,在函数的外部无法相用它,局部变量的作用域仅限于函数内部
$test = 'test';
function demo(){
$test = 'demo';
echo $test;
}
demo();
静态变量
局部变量在函数退出时会被撤消,与局部变量不同.
静态变量在函数退出时不会丢失值,并且再次调用函数时还能保留这个值;
在变量名前面加上 static 关键字就可以声明一个静态变量;
function keep_val(){
static $count = 0;
$count++;
echo $count;
echo '<br>';
}
keep_val();
keep_val();
keep_val();
函数库
通常将常用的函数组织到函数库中,可以在以后类似的应用程序中重复使用。
需要调用时使用include()或require()将函数库包含到脚本中;
include 与 require
include()语句将在其被调用的位置处包含一个文件。
include("init.php");
include_once()的作用与include()相同,不过它会首先验证是否已经包含了该文件.
如果已经包含,则不再执行include_once();
require()
require_once()
require() 与 include() 之间的区别
如果require()包含文件出错时,脚本将停止执行。 而使用include()脚本将继续执行。