Date
Nov. 21st, 2024
 
2024年 10月 21日

Post: PHP Primer 019 : 函数基础

PHP Primer 019 : 函数基础

Published 12:01 Jan 24, 2012.

Created by @ezra. Categorized in #Programming, and tagged as #PHP.

Source format: Markdown

Table of Content

前面的博文中多次提到和用到函数,现在我们就来了解一下 PHP 中的函数。

定义函数

在 PHP 中,函数使用 function 关键字来定义,通常还有函数名、参数列表、函数体组成。函数返回值不需要声明,如果没有返回值则省略 return 语句即可。

定义函数的基本格式为:

<?php
    function 函数名(参数1, 参数2, 参数3...) {
        函数体
    }
?>

举个栗子:

<?php
    function foo($str, $pri) {
        echo str;
        return "ret";
    }
    $a = foo("some string", true);
    echo $a;
?>

参数默认值

函数的参数允许设定默认值,在定义函数是直接在参数右侧加上 = 默认值 即可,例如 function foo($a, %b = 'b'){}

注意 : 设定参数默认值需要从参数列表右侧开始,也就是说如果为某一个参数设定了默认值,那么它右侧不能出现没有默认值的参数,形如 function foo($a = '1', %b){} 这样的函数是错误的。

参数传递

参数传递支持两种方式: 值传递、引用传递。但是要注意在 PHP 5 之前的版本不支持引用传递的方式。

  • 值传递指的是将实参的值复制到形参中,函数内部的操作不影响实参。

  • 引用传递指的是将实参内存地址传入,在函数内部的操作直接影响到实参的值。

也就是说值传递中,实参与形参分别指向两块不同的内存区域,而引用传递则指向同一块内存区域。

要进行引用传递,则需要在形参前添加 & 符号。

<?php 
    function foo1($var) { # 值传递
        $var++;
        echo "foo1:".$var."\n";
    }
    function foo2(&$var) { # 引用传递
        $var++;
        echo "foo2:".$var."\n";
    }
    $a = 10;
    echo $a."\n";
    foo1($a);
    echo $a."\n"; # 值未改变

    $b = 20;
    echo $b."\n";
    foo2($b);
    echo $b."\n"; # 值被改变
?>

变量函数

$$ 类似,我们也可以用过 $var() 的形式来调用函数,PHP 会取出 $var 的值并寻找与这个值同名的函数。举个栗子:

<?php 
    function foo($var) {
        echo $var;
    }

    $a = "foo";
    $a("meniny");
?>
Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询