php - 以下陈述之间的主要区别是什么?

标签 php

最近在研究“引用传递”,了解到以下几种方法

以下方法之间的主要区别是什么。

1.

function foo(&$var)
{
    $var++;
}

$a=5;
foo($a);

2.

function foo($var)
{
    $var++;
}

$a=5;
foo(&$a);

3.

function foo(&$var)
{
    $var++;
}
function &bar()
{
    $a = 5;
    return $a;
}
foo(bar());

尽管它们都产生相同的结果,但这是最好的处理方式。

谢谢。

最佳答案

function foo(&$var)
{
    $var++;
}

$a=5;
foo($a);

它接受一个总是通过引用传递的参数(&foo(<b>&$var</b>) 中)。当$a被传递时,它始终作为引用,因此在函数内部递增变量将导致参数被修改。


function foo($var)
{
    $var++;
}

$a=5;
foo(&$a);

不要使用它。这是调用时按引用传递(您将 &$a 传递给函数,对 $a 的引用),并且 弃用 自 PHP 5.3.0 起。这是一种不好的做法,因为该函数不期望引用。


function foo(&$var)
{
    $var++;
}
function &bar()
{
    $a = 5;
    return $a;
}
foo(bar());

这将返回对变量 & 的引用(&bar()$a 中)在函数中声明 bar() .然后它引用 bar() 的返回值。并增加它。不过,我不确定为什么这会有用,尤其是对于原始/标量类型。

关于php - 以下陈述之间的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3851013/

相关文章:

PHP改进数据检索

当我进入 While 循环时 PHP 搜索不工作

php - 如何轻松修复此错误 fatal error : Call to a member function execute() on boolean in/Applications/XAMPP/xamppfiles/htdocs

php - 如何在 Windows 上的任何地方运行 .phar?

php - 如何在mysqli中转义字符串

php - Magento 2 : How to change Payment Action Method on the fly in Paypal Express

php - 带有 PHP、html 格式的电子邮件确认电子邮件

php - 刷新 div,但前提是 php 文件中有新内容

php - mailto href 正文未显示发送的完整数据

php - 在 MySQL 中使用多个 OR 语句