首页 > PHP教程 > PHP类与对象的使用

PHP函数定义与使用

函数是一组完成特定功能的程序语句的集合,在程序中重复使用的语句块,提高编程效率。php有超过 1000 个内建的函数

用户自定义函数

一个函数可由以下的语法来定义: 

展示函数用途的伪代码 

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$string = get_include_contents('somefile.php'); 
function get_include_contents($filename) {
    if (is_file($filename)) {
        ob_start();
        include $filename;
        $contents = ob_get_contents();
        ob_end_clean();
        return $contents;
    }
    return false;
}
?>

任何有效的 PHP 代码都有可能出现在函数内部,甚至包括其它函数和类定义。 

函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。可以用正则表达式表示为:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*。 

函数无需在调用之前被定义,除非是下面两个例子中函数是有条件被定义时。 

当一个函数是有条件被定义时,必须在调用函数之前定义。 

有条件的函数 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php 
$makefoo = true; 
/* 不能在此处调用foo()函数,
   因为它还不存在,但可以调用bar()函数。*/ 
bar(); 
if ($makefoo) {
  function foo()
  {
    echo "I don't exist until program execution reaches me.\n";
  }
/* 现在可以安全调用函数 foo()了,
   因为 $makefoo 值为真 */ 
if ($makefoo) foo(); 
function bar()
{
  echo "I exist immediately upon program start.\n";
?>

函数中的函数 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function foo()
{
  function bar()
  {
    echo "I don't exist until foo() is called.\n";
  }
/* 现在还不能调用bar()函数,因为它还不存在 */ 
foo(); 
/* 现在可以调用bar()函数了,因为foo()函数
   的执行使得bar()函数变为已定义的函数 */ 
bar(); 
?>

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

PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。 

函数名是大小写无关的,不过在调用函数的时候,使用其在定义时相同的形式是个好习惯。

PHP 的函数支持可变数量的参数和默认参数。参见 func_num_args(),func_get_arg() 和 func_get_args()。 

在 PHP 中可以调用递归函数。 

递归函数 

1
2
3
4
5
6
7
8
9
<?php
function recursion($a)
{
    if ($a < 20) {
        echo "$a\n";
        recursion($a + 1);
    }
}
?> 

函数的参数 

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

PHP 支持按值传递参数(默认),通过引用传递参数以及默认参数。也支持可变长度参数列表。 

向函数传递数组 

1
2
3
4
5
6
<?php
function takes_array($input)
{
    echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>

通过引用传递参数 

默认情况下,函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)。如果希望允许函数修改它的参数值,必须通过引用传递参数。 

如果想要函数的一个参数总是通过引用传递,可以在函数定义中该参数的前面加上符号 &: 

用引用传递函数参数 

1
2
3
4
5
6
7
8
9
<?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.'
?>

默认参数的值 

函数可以定义 C++ 风格的标量参数默认值,如下所示: 

在函数中使用默认参数 

1
2
3
4
5
6
7
8
9
<?php
function makecoffee($type = "cappuccino")
{
    return "Making a cup of $type.\n";
}
echo makecoffee();
echo makecoffee(null);
echo makecoffee("espresso");
?>

以上例程会输出: 

Making a cup of cappuccino.

Making a cup of .

Making a cup of espresso.

PHP 还允许使用数组 array 和特殊类型 NULL 作为默认参数,例如: 

使用非标量类型作为默认参数 

1
2
3
4
5
6
7
8
9
<?php
function makecoffee($types = array("cappuccino"), $coffeeMaker = NULL)
{
    $device = is_null($coffeeMaker) ? "hands" : $coffeeMaker;
    return "Making a cup of ".join(", ", $types)." with $device.\n";
}
echo makecoffee();
echo makecoffee(array("cappuccino", "lavazza"), "teapot");
?>

默认值必须是常量表达式,不能是诸如变量,类成员,或者函数调用等。 

注意当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,函数将不会按照预期的情况工作。考虑下面的代码片断: 

函数默认参数的不正确用法 

1
2
3
4
5
6
7
<?php
function makeyogurt($type = "acidophilus", $flavour)
{
    return "Making a bowl of $type $flavour.\n";
echo makeyogurt("raspberry");   // won't work as expected
?>

以上例程会输出: 

Warning: Missing argument 2 in call to makeyogurt() in 

/usr/local/etc/httpd/htdocs/phptest/functest.html on line 41

Making a bowl of raspberry .

现在,比较上面的例子和这个例子: 

函数默认参数正确的用法 

1
2
3
4
5
6
7
<?php
function makeyogurt($flavour, $type = "acidophilus")
{
    return "Making a bowl of $type $flavour.\n";
echo makeyogurt("raspberry");   // works as expected
?>

以上例程会输出: 

Making a bowl of acidophilus raspberry.

自 PHP 5 起,传引用的参数也可以有默认值。

 

返回值 

值通过使用可选的返回语句返回。可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。更多信息见 return。 

如果省略了 return,则返回值为 NULL。

return 的使用 

1
2
3
4
5
6
7
<?php
function square($num)
{
    return $num * $num;
}
echo square(4);   // outputs '16'.
?>

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

返回一个数组以得到多个返回值 

1
2
3
4
5
6
7
<?php
function small_numbers()
{
    return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
?>

从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用运算符 &: 

从函数返回一个引用 

1
2
3
4
5
6
7
<?php
function &returns_reference()
{
    return $someref;
$newref =& returns_reference();
?>

PHP函数、对象定义与使用

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。