PHP:什么&在变量名前面是什么意思?

时间:2010-09-22 22:35:32

标签: php

什么是&在变量名前面是什么意思?

例如& $ salary vs. $ salary

4 个答案:

答案 0 :(得分:58)

它传递对变量的引用,因此当编辑分配引用的任何变量时,原始变量将被更改。在创建更新现有变量的函数时,它们非常有用。您可以简单地将引用传递给函数,而不是硬编码更新哪个变量。

示例

<?php
    $number = 3;
    $pointer = &$number;  // Sets $pointer to a reference to $number
    echo $number."<br/>"; // Outputs  '3' and a line break
    $pointer = 24;        // Sets $number to 24
    echo $number;         // Outputs '24'
?>

答案 1 :(得分:2)

它是一个引用,与其他语言(如C ++)非常相似。 documentation中有一节介绍它。

答案 2 :(得分:0)

要通过引用赋值,只需在被赋值的变量(源变量)的开头加上一个与号 (&)。例如,以下代码片段输出两次“我的名字是鲍勃”:

$foo = 'Bob';              // Assign the value 'Bob' to $foo
$bar = &$foo;              // Reference $foo via $bar.
$bar = "My name is $bar";  // Alter $bar...
echo $bar;
echo $foo;                 // $foo is altered too.

需要注意的一件重要事情是只能通过引用分配命名变量。

$foo = 25;
$bar = &$foo;      // This is a valid assignment.
$bar = &(24 * 7);  // Invalid; references an unnamed expression.

function test()
{
   return 25;
}

$bar = &test();    // Invalid.

最后,在获取一个引用作为参数时,它必须传递一个变量的引用,而不是其他任何东西。虽然这不是一个大问题,因为我们知道我们为什么要使用它。但它可以发生很多次。这是它的工作原理:

function change ( &$ref ) {
  $ref = 'changed';
}

$name = 'Wanda';

change ( $name ); // $name reference
change ( 'Wanda' ); // Error

echo $name; // output: changed

README(更多信息)

答案 3 :(得分:-1)

用于通过引用传递对象。

请参阅PHP文档中的this entry