PHP 函数
PHP 函数是一段被命名的、完成特定任务的代码。PHP 函数可以是内置的(开发 PHP 的人写的),也可以是用户自己写的。
函数总是以相同的方式求值:
returnValue = function_name([parameter, ...]);
可以把函数看成一个神奇的盒子,你向盒子里扔进一枚币,盒子就会弹出一个面包。
币就是 parameter,面包就是 returnValue。
如果拥有函数的源代码,你就可以盒子里面是如何收币,如何弹出一个面包。
如果没有源代码,你就很难知道盒子对币做了鉴定和处理,以及盒子如何弹出这个面包。
定义函数
函数名不却分大小写。
注意这里的中括号 [],在编程领域中,一般表示被括住的元 素是一个可选元素,即,可以有,也可以没有,有和没有各有各的用途。
function [&] function_name([parameter, ...])
{
// statement list
}
嵌套定义
出于需求,可以在函数内定义函数。
此时,在外部作用域中 innerFunction() 函数也是可见的,但在 innerFunction() 内部,$var1 是不可见的。
function outerFunction($var1)
{
function innerFunction($var2)
{
}
}
全局变量
在函数中,可以同构 global 关键字访问全局作用域的变量
$var1 = 'abc';
function use_global_func($var1)
{
global $var1;
// 这里可以使用 $var1 了
}
静态变量
静态变量用 static 声明,在所有对该函数的调用中是共享的。
function use_static_func($var1)
{
static $var1 = 0;
return $var1++;
}
函数参数
函数可以声明任意多个参数。
向函数传递参数有两种方式:一、按值传递;二、按引用传递;
值传递
向函数传递的默认方式。值传递会产生复制,如果传递的对象占用内存很大,这是一个高成本的操作。
引用传递
function by_quote(&$value)
{
$value = $value + 1;
}
$var1 = 3;
by_quote($var1);
echo $a;
默认参数
调用函数时,如果存在参数,但未传递参数,就会使用默认参数的值。
function default_para($var1='L')
{
echo $var1;
}
echo default_para();
可变参数
在函数内部可以使用以下函数获取函数的参数信息。
func_get_args()
func_num_args()
func_get_arg()
类型提示
如果定义函数时,定义了参数类型,则要求调用函数时按类型调用,否则会产生运行时错误。
返回值
函数可以返回一个值。
可变函数
由于可以使用 $$ 结构调用函数。
但要注意的是,灵活性和安全性是难以调和的。
匿名函数
一个匿名函数的例子就是自定义排序
$old_world_en = array("Mesopotamia", "Ancient Egypt", "Ancient India", "China");
usort($old_world_en, function($a, $b) {
return strlen($a) - strlen($b);
});
print_r($old_world_en);
这里有一个闭包的概念,向PHP 的闭包内传递变量需要用到 use 关键字
$old_world_en = array("Mesopotamia", "Ancient Egypt", "Ancient India", "China");
usort($old_world_en, function($a, $b) use ($options){
if ($options == 0) {
return rand(0, 2) - 1;
}
return strlen($a) - strlen($b);
});
print_r($old_world_en);