到目前为止,我们已经编写了一些简单而小的代码,但是用这种类型的代码无法完成一个真正的应用程序。我们需要编写大量的代码,并在没有相同副本的情况下反复使用部分代码。函数使我们能够使用给定的代码部分从应用程序的不同部分多次运行。函数还提供了一些抽象,因此我们只提供了所需的参数并得到了我们现在不需要的结果来详细说明实现细节。
定义函数
函数具有实现函数代码的主体。函数定义为 function
关键字。之后,函数名和参数将在括号内提供。最后也是最大的部分是花括号中的函数体。这里是语法。
function NAME ( PARAMETERS ){BODY}
在本例中,我们将创建一个函数名 message
它没有参数,只打印一些文本。函数定义中的参数是可选的,所以如果我们不需要它们 ()
够了。我们将用函数名和参数调用函数,但没有参数。
function message(){ echo "This is a message from poftut.com";}message();
过程参数
在前面的示例中,我们没有为函数提供参数或定义参数。 大多数函数通常需要参数来完成给定的作业。我们可以在括号中的函数名之后定义参数 ()
就像一个普通的变量名。
在本例中,我们将定义两个名为 $a
和 $b
. 函数名将为 sum
因为我们将对给定的变量求和并在函数中打印结果。
function sum($a , $b){ echo $a+ $b;}sum(2,3); //Print 5
返回值
在前面的示例中,我们已经完成了函数内部的相关操作。但是一般的用法有点不同。通常用于返回某些数据或结果的函数。我们将使用 return
关键字以从函数返回结果。
相关文章: Php类
这个例子和上一个是一样的,但是我们已经返回了结果,并在函数外打印出来,这使得事情更清楚,更容易理解。
function sum($a , $b){ return $a+ $b;}echo sum(2,3); //Print 5
按引用传递参数
参数通常通过将其值复制到给定的函数参数变量中来传递,函数参数变量中的任何更改都不会影响所提供的参数。在某些情况下,我们可能需要更改函数中提供的参数。为此,我们应提供参考参数。我们将使用 &
在函数定义的参数名之前。
在本例中,我们将为名为 increase
作为参考。
$x = 5;function increase(&$a){ $a++;}increase($x);echo $x;
这将打印 6
因为 $x
作为引用传递给 $a
参数和 $a
参数增加1。
默认参数值
在为函数提供参数时,某些参数可能会得到通常相同的值。虽然多次调用这个函数,但这将是一项琐碎的任务。如果没有明确定义,我们可以设置参数的默认值。
在本例中,我们设置函数 sum
参数 $b
默认值为5,但如果需要,可以像普通函数调用一样显式指定。
function sum($a , $b=5){ return $a+ $b;}echo sum(2); //Print 7
动态函数调用
动态函数调用是Php函数的一个有趣特性。我们可以通过将函数名指定为字符串值来调用函数。
在本例中,我们将调用函数 sum
使用名为$ functionname
.
function sum($a , $b){ echo $a+ $b;}$functionname="sum";$functionname(2,3); //Prints 5
递归函数
一些原始问题需要更原始、更有效的解决方案。递归函数用于将一个大问题分解成几个小部分,只是一次又一次地调用自己。下面是一个递归示例
function fact($n) { if ($n === 0) { // our base case return 1; } else { return $n * fact($n-1); //