命名规范

函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。

函数无需在调用之前被定义

<?php

function actionA()
{
    echo "A";
}

actionA();//可以调用
actionB();//可以调用

function actionB()
{
    echo "B";
}

除非函数是有条件被定义或者在函数中调用函数,一般都无须在调用函数之前定义。

函数中调用函数

<?php

function actionA()
{
  function actionB()
  {
      echo "B";
  }
}

actionB();//无法调用
actionA();//定义函数 actionB()
actionB();//可以调用

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

<?php

function sayHi()
{
    echo 'Hi';
}
function sayHi()
{
    echo 'Hello';
}
sayHi();//报错,不能重定义函数 sayHi()

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

递归函数

递归函数的本质是函数调用函数本身,但是要避免递归函数/方法,调用超过 100-200 层,因为可能会使堆栈崩溃从而使当前脚本终止。 无限递归可视为编程错误。

<?php
function recursion($a)
{
    if ($a < 20) {
        echo "$a\n";
        recursion($a + 1);
    }
}

函数的参数

通过参数列表可以传递信息到函数,即以逗号作为分隔符的表达式列表。

PHP 支持按值传递参数(默认),通过引用传递参数以及默认参数。也支持可变数量的参数;

通过引用传递参数

缺省情况下,函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)。如果希望允许函数修改它的参数值,必须通过引用传递参数。 如果想要函数的一个参数总是通过引用传递,可以在函数定义中该参数的前面预先加上符号 &:

<?php
function actionB(&$string)
{
    $string .= 'and something extra.';
}
$str = 'This is a string, ';
actionB($str);
echo $str;    // outputs 'This is a string, and something extra.'
?> 

默认参数的值

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

<?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.

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。