php中文网

PHP 函数中引用参数与全局变量的关系

php中文网

在 php 中,引用参数和全局变量都允许函数修改外部变量,但它们存在以下差异:范围:引用参数仅在函数内部有效,而全局变量在整个脚本中有效。可见性:引用参数必须在函数中显式声明,而全局变量在任何地方都可以访问。意图:引用参数通常用于修改传递给函数的值,而全局变量用于直接访问外部变量。

PHP 函数中引用参数与全局变量的关系

在 PHP 中,函数参数可以是传递值引用值。当参数传递为引用时,对其进行的任何更改都会反映在调用函数中原始变量的值上。

引用参数

要将参数传递为引用,请在参数类型声明之前使用 '&' 符号。

function changeValueByReference(int &$number) {
    $number *= 2;
}

全局变量

全局变量是在函数外部声明的变量,可以在任何地方访问,包括函数内部。

立即学习“PHP免费学习笔记(深入)”;

要访问全局变量,请使用 global 关键字。

$globalVariable = 10;

function accessGlobalVariable() {
    global $globalVariable;
    echo $globalVariable; // 输出 10
}

关系

使用引用参数和全局变量的目的是相似的:允许函数修改函数外部的变量。然而,两者之间存在以下关键差异:

  • 范围:引用参数仅在函数内部有效,而全局变量在整个脚本中有效。
  • 可见性:引用参数必须在函数中显式声明,而全局变量在任何地方都可以访问。
  • 意图:引用参数通常用于修改传递给函数的值,而全局变量用于直接访问外部变量。

实战案例

考虑以下代码片段:

function calculateTotal(array &$items) {
    $total = 0;
    foreach ($items as &$item) {
        $item['price'] *= 0.9; // 应用 10% 的折扣
        $total += $item['price'];
    }
}

$items = [
    ['name' => 'Item 1', 'price' => 10],
    ['name' => 'Item 2', 'price' => 15],
];

calculateTotal($items);

print_r($items); // 输出 [['name' => 'Item 1', 'price' => 9], ['name' => 'Item 2', 'price' => 13.5]]

在这个例子中,将 $items 数组作为引用参数传递给 calculateTotal 函数。这允许函数直接修改数组的元素(每个商品的价格)。此外,函数内部还使用了 global 关键字来访问外部 $total 变量,用于计算总价。

以上就是PHP 函数中引用参数与全局变量的关系的详细内容,更多请关注php中文网其它相关文章!