自定义函数
<?php
function text()
{
echo '你好!';
}
text();
注意:function后跟自定义函数。
末尾的text():为函数的调用,与前面的保持一致,同时text():放在自定义函数前,也能实现。
函数的调用需要遵守定义函数的时候写的规则,一一对应,将具体的实际参数传给定义函数时候写的形式参数;
调用函数之后执行的过程是相对独立的,互不干扰的,默认没有联系。
参数
形式参数由零个,一个或多个变量组成。
实际参数由零个,一个或多个参数组成,每个参数是一个表达式,用逗号隔开。
<?php
function add($a,$b)//形式参数,一种形式,在这里,没有具体的值
{
echo $a+$b;
}
add(2,3);//实际参数
?>
函数返回值
是将函数执行后的结果返回给调用者,默认值如果不写返回,则函数的返回值为NULL。
<?php
function add($a,$b)
{
return $a+$b;//返回值给调用的地方,结束这个函数的运行。
}
var_dump(add(2,3));//可输出
?>
调用了add函数
<?php
function add($a,$b)
{
return $a+$b;
}
$i=add(2,3);
echo $i;
?>
PHP变量的范围
局部变量
局部变量也称内部变量,是在函数内定义的,其作用域仅限于函数内部(即为{ }内),离开函数后再使用这种变量就是非法的错误的。
<?php
function add(){
$i=22;
echo $i;//有意义
}
echo $i;//无意义
add();
全局变量
也叫外部变量,在函数的外部定义的,它的作用域为从变量定义处开始,到本程序,文件末尾。
但在PHP函数中无法直接使用全局变量,如需使用,必须用global声明变量。
<?php
$i=10;
function add(){
global $i;//声明$i为全局变量,然后在这个函数内部就可以使用$i;
echo $i;
}
add();
静态变量
在函数内部定义变量时,使用static关键字来定义变量。
<?php
function add(){
static $i=23;//静态变量,仅在第一次调用时执行,
echo ++$i;//当第二次执行这个函数的时候,$i这个变量依旧存在
}
add();
echo'<br />';
add();
而缺少关键字
<?php
function add(){
$i=22;
echo ++$i;//有意义
}
add();
echo'<br />';
add();
参数的传递
按值传递参数
默认的,我们在传递参数的时候默认使用的就是这个方式。
对于形式参数的操作,根本不是影响到实际参数(变量)的值,两者 相当于没有联系!
<?php
function add($i){
echo ++$i;
}
$i=10;
add($i);
echo '<br />'.$i;
按引用传递参数
按引用传递参数,相当与形式参数和实际参数指的是同一个人,只是名字不一样,对于形式参数的操作会直接影响到实际的参数(变量)
<?php
function add(&$i){
echo ++$i;
}
$i=10;
add($i);
echo '<br />'.$i;
函数的默认参数
可以给形式参数设置默认值,设置方法很简单直接赋值即可!
<?php
function add($i=10){
echo ++$i;
}
add();
如果不传,按上面的值走。
<?php
function add($i=10){
echo ++$i;
}
add(20);
如果传的话,按下面的实际参数值走。
注意:形式参数加默认值,要从右往左。
<?php
function add($a=1,$i){
echo $a+$i;
}
add(,20);
会报错,要将右面的$i
先赋值。才可以对于$a
进行赋值。
<?php
function add($a,$i=1){
echo $a+$i;
}
add(3,);
或
<?php
function add($a,$i=1){
echo $a+$i;
}
add(3);
均可的到,如图所示。
以次同理…
可变长度参数
fun_get_args();//数组类型
fun_get_arg();//括号内可加数字(从0开始),代表要输出传入的第几个实参。
多为var_dump(fun_get_arg());
func_num_args();//返回传入函数的参数个数
这三个函数可以使用在我们的定义函数内部,能够返回给我们一些关于参数的信息。
可变函数(变量函数)
可变函数不能直接用于例如 echo,print,unset(),isset();empty(),include,require 以及类似的语言结构,
<?php
function text(){
echo '可变text';
}
$a='text';//把函数名字加上引号,赋值给变量即可,
$a(2);//text();
递归函数
在函数内部,自己调用自己,
<?php
function text($n){
echo $n.'可变';//前
if($n>0)
{
text($n-1);
}
else{
echo'<-->';
}
echo $n.'可变';//后
}
text(3);
$n 是局部变量,在分配的空间里面相互独立,没有关联。
当先输入3执行完后键入判断,判断要求用test(),函数test()没有执行完毕,后面的输出3也不会执行。
内部(内置)函数
php提供给我们许多现成的函数或者结构,我们可以在实际的开发中直接使用。
还有一些函数需要开启 特定的php扩展模块,否则在使用他们时会得到一个致命的”未定义函数“错误。