在 PHP 3 中,函数必须在被调用之前定义。而 PHP 4 则不再有这样的 条件。除非函数如以下两个范例中有条件的定义。
有条件的函数:
<?php
$makefoo = true;
/* We can't call foo() from here
since it doesn't exist yet,
but we can call bar() */
bar();
if ($makefoo) {
function foo ()
{
echo "I don't exist until program execution reaches me.
";
}
}
/* Now we can safely call foo()
since $makefoo evaluated to true */
if ($makefoo) foo();
function bar()
{
echo "I exist immediately upon program start.
";
}
?>
函数中的函数:
<?php
function foo()
{
function bar()
{
echo "I don't exist until foo() is called.
";
}
}
/* We can't call bar() yet
since it doesn't exist. */
foo();
/* Now we can call bar(),
foo()'s processesing has
made it accessable. */
bar();
?>
函数的参数:php支持按值传递参数(默认)、通过引用传递、默认参数值。向函数传递数组:缺省情况下函数参数通过值传递
<?php
function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>
引用传递函数参数:默认值通常是常量表达式,不是变量,类成员,或者函数调用
<?php
function add_some_extra(&$string)
{
$string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str; // outputs 'This is a string, and something extra.'
?>
默认参数的值
<?php
function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>
输出结果:
Making a cup of cappuccino. Making a cup of espresso
请注意当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则, 可能函数将不会按照预期的情况工作。考虑下面的代码片断:
<?php
function makeyogurt ($flavour, $type = "acidophilus")
{
return "Making a bowl of $type $flavour. ";
}
echo makeyogurt ("raspberry"); // works as expected
?>
函数返回值:返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 &
<?php
function &returns_reference()
{
return $someref;
}
$newref =& returns_reference();
?>