PHP 函数
PHP函数
函数是可以在程序中重复使用的语句块,PHP中提供了超过1000个内建的函数,也可创建自己的函数。自定义函数声明以关单 "function" 开头。
自定义函数名以字母或下划线打头,后面跟字母,数字或下划线。
自定义函数只有在被调用时才会执行
自定义函数名对大小写不敏感
语法:function 函数名(参数1, 参数2, /* ..., */ 参数N)
{
要执行的代码;
}
案例1:<?php
function myfunction()
{
echo "张三";
}
echo "我的名字是";
myfunction();// 调用函数
?>
结果:
我的名字是张三
PHP函数参数
PHP 还允许使用数组 array 和特殊类型 NULL 作为默认参数。
案例2<?php
function myfunction($fname) {
echo "$fname 姓张
";//一个参数
}
function mycanshu($name,$sex="未知") {
echo $name."性别是".$sex."
";//使用两个参数
}
function myarray($arr) {
echo $arr[0]."性别是".$arr[1]."
";//使用数组
}
myfunction("张三");
mycanshu("李四"); //这里缺少第二参数则使用默认参数
mycanshu("陈五","男"); //这不使用默认参数
myarray(array("李六","女"));
?>
结果:
张三 姓张
李四性别是未知
陈五性别是男
李六性别是女
PHP函数调用
函数无需在调用之前被定义,除非是下面两个例子中函数是有条件被定义时
案例3:<?php
header("content-type:text/html;charset=utf-8"); //设置编码
$condition = true;
/* 不能在此处调用fun()函数,
因为它还不存在,但可以调用bar()函数。*/
bar();//这是一般调用
if ($condition) {
function fun()
{
echo "在程序执行到达我之前我是不存在的";
}
}
/* 现在可以调用函数 fun()了,
因为 $condition 值为真 */
if ($condition) fun();
function bar()
{
echo "我在程序执行时就存在了";
}
bar();//这是一般调用
?>
结果:
我在程序执行时就存在了
在程序执行到达我之前我是不存在的
我在程序执行时就存在了
PHP函数返回值
如果省略了 return,则返回值为 NULL。函数不能返回多个值,但可以通过返回一个数组来得到类似的效果,可以返回包括数组和对象的任意类型。
案例:<?php
function nums()
{
return array (1, 2, 3);
}
var_dump(nums());
?>
结果:
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
PHP可变函数
改变函数是通过改变函数的值从而改变要调用的函数,PHP 将寻找与变量的值同名的函数,方法是变量名后有圆括号,方法、属性、常量义可改变。
可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。
案例:<?php
header("content-type:text/html;charset=utf-8"); //设置编码
function funone() {
echo "我是funone()
\n";
}
function funtwo($cs = '') {
echo "我是funtwo(); 参数是'$cs'.
\n";
}
// 使用 echo 的包装函数
function funthree($cs)
{
echo $cs;
}
$funone = 'funone';
$funone(); //调用funone()
$funtwo = 'funtwo';
$funtwo('canshu'); //调用funtwo()
$funthree = 'funthree';
$funthree('canshu'); //调用funthree()
?>
结果:
我是funone()
我是funtwo(); 参数是'canshu'.
canshu
PHP匿名函数
PHP从 5.3 开始支持匿名函数,直接function加圆括号赋值给变量
语法:$变量名 = function(参数){
要执行代码;
};
案例:<?php
$fun = function($arg){
echo $arg;
};//注意匿名函数必须以;结尾。
var_dump($fun);
echo '
';
$fun('我是匿名函数!');
?>
结果:
object(Closure)#1 (1) {
["parameter"]=>
array(1) {
["$arg"]=>
string(10) ""
}
}
我是匿名函数!