1、可以在一个函数内部再定义一个函数,但是这并不影响函数的可见性,只有先调用外层函数才能调用内层函数,否则会出现错误。
2、全局变量中,使用全局变量等效于在$GLOBALS变量中对变量创建一个引用
global $var;
var =& $GLOBALS["var"];
两种方法是等效的
3、函数参数传递的方式
按值传递和按引用传递
在按引用传递的时候,必须注意,传递的必须是一个变量,且在函数定义的时候,要在参数前面加上一个&
在绝大多数情况下我们都选择按引用传递参数,因为按值传参的时候会有复制产生,增大开销。
4、默认参数函数
所有带有默认值的参数都应该在不带默认值的参数的右边,而且默认参数函数的带默认值的参数必须是常量
5、可变参数函数
在可变参数函数中,在函数定义的时候不给参数列表,在调用函数的时候给出参数,利用一下三个函数进行使用:
func_get_args() //得到一个数组,里边是参数列表
func_num_args() //得到参数的个数
func_get_arg($num) //得到第几个参数,这个是按照索引顺序来的
配合使用
6、返回值
函数的返回值可以是一个单值,也可以是一个数组,还可以是一个引用
$name = array("Amy","Bob","Tim","Jim");
function & get_name($i)
{
global $name;
return $name[$i];
}
$one =& get_name(2);//返回的是$name[2]的别名而不是值,在通常情况下,由于写时复制的存在,通常都不用返回引用
echo $one;
7、可变函数
可以将变量名加括号作为函数名,内置的函数如echo,isset等不能作为可变函数名,为了判断是否存在这个函数,通常我们用function_exists()函数来测试是否这个函数存在
$func = "maxval";
if(function_exists($func))
{
echo $func(1,2);
}
8、函数做函数参数
例如对于usort函数,按字符串长度排序,先写一个比较函数
function length_compare($string_a,$string_b)
{
return strlen($string_a)>strlen($string_b);
}
$greeting = array("Hello","Hi","Good Night","Good Morning");
usort($greeting,length_compare);
foreach($greeting as $row):
echo $row."<br />";
endforeach;
PHP学习笔记(2)
最新推荐文章于 2023-08-18 21:03:31 发布