1. 文章
  2. 文章详情

PHP函数解析

定义与调用

函数是一组可重复使用的,特定功能的代码块

function foo($arg_1, $arg_2, ..., $arg_n){

echo "Example function.n";

return $retval;

}

有效函数名以字母或下划线开始,后跟字母、数字、下划线。

※ 不支持函数重载也不能取消定义或重定义

※ 调用:函数无需在调用之前被定义,但是当一个函数是有条件地定义时,必须在调用之前定义。

※ 作用域:在PHP中局部作用域指函数内部,全局作用域就是函数外部,PHP 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。

§10.PHP函数

$name前加上关键字“GLOBAL”,或者函数名写为“test()use($name)”即可输出

函数参数

通过参数列表可传递信息到函数,以逗号作为分隔符的表达式列表,参数从左向右求值。

形参:在函数定义时的括号里写入,可有可无,可设定默认值

实参:在调用函数时使用的参数,实参和形参个数相匹配,只数量能大于不能少于

返回值

return 为可选,函数输出结果在内存中。

不能返回多个值,但可以通过返回数组来得到类似效果。

※ 如果省略了 return,则返回值为 NULL,函数结尾必须Return运行结果、或直接在函数内部echo,否则函数不输出。

可变函数&匿名函数

§10.PHP函数

函数值传递

►值传递(拷贝传值)

$name = 'Jax';

function test($name){

$name = 'May';

echo "函数调用结果:",$name,'
';

}

echo "函数调用前:",$name,'
';

test($name);

echo "函数调用后:",$name,'
';

上述程序执行结果依次为:Jax/May/Jax

►引用传递(引用传值)

$name = 'Jax';

function test(&$name){

$name = 'May';

echo "函数调用结果:",$name,'
';

}

echo "函数调用前:",$name,'
';

test($name);

echo "函数调用后:",$name,'
';

上述程序执行结果依次为:Jax/May/May

内置函数

PHP 有很多标准函数。有一些函数需要和特定地 PHP 扩展模块一起编译,否则使用时候会产生致命的"未定义函数"错误。如imagecreatetruecolor()需要加上 GD 的支持,mysql_connect()需要加上 MySQL 支持。调用 phpinfo()或get_loaded_extensions() 可查看已加载了那些扩展库。

Time()

//返回从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。

mktime(时,分,秒,月,日,年)

//将一个日期转为 Unix 时间戳

Date(“Y-m-d H:i:s”,[ int $timestamp ] )

//返回将整数 timestamp 按照给定的格式字串而产生的字符串。

Floor( float $value)

//舍去法取整, 向下取整

Ceil(float $value)

//进一法取整, 向上取整

Round(float $value)

//对浮点数进行四舍五入

Rand( int $min , int $max )

//如果没有提供可选参数 min 和 max,则返回0到getrandmax()之间的伪随机整数。

Mt_rand(int $min , int $max)

//可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍

递归函数

函数自身调用自身

function recursion($a)

{

if ($a < 20) {

echo "$an";

recursion($a + 1);

}

}

※ 避免递归超过100-200层,可能会使堆栈崩溃从而终止当前脚本,无限递归视为编程错误

参考:https://zhuanlan.zhihu.com/p/34012976

发表评论

登录后才能评论

评论列表(0条)