PHP中的=&表示什么?

Jas*_*vis 19 php

考虑:

$smarty =& SESmarty::getInstance();
Run Code Online (Sandbox Code Playgroud)

有什么&用?

Tyl*_*ter 32

它通过引用传递.这意味着它不会创建传递的值的副本.

请参阅:http: //php.net/manual/en/language.references.php(参见Adam的答案)

通常,如果你传递这样的东西:

$a = 5;
$b = $a;
$b = 3;

echo $a; // 5
echo $b; // 3
Run Code Online (Sandbox Code Playgroud)

$a如果更改第二个变量($b),则不会修改原始变量().如果您通过引用传递:

$a = 5;
$b =& $a;
$b = 3;

echo $a; // 3
echo $b; // 3
Run Code Online (Sandbox Code Playgroud)

原件也改变了.

传递对象时没用,因为默认情况下它们将通过引用传递.

  • PHP5对象默认情况下不通过引用传递:而是通过值传递对象标识符(类似于Java的'引用'语义); 有关详细信息,请参阅手册:http://www.php.net/manual/en/language.oop5.references.php (5认同)
  • @Chacha102 和 @jasondavis 引用绝对不是毫无意义的。它们是无价的。也许它们在使用原语时并不总是有用,但是在使用任何 OOP 时它们非常有用——包括基本数组。 (2认同)

Ric*_*uen 7

在PHP 4中,它有点(笨拙地)关联两个变量.

$j = 'original';
$i =& $j;
$i = 'modified';
echo $j; // The output is 'modified'
Run Code Online (Sandbox Code Playgroud)

同样...

$j = 'original';
$i =& $j;
$j = 'modified';
echo $i; // The output is 'modified'
Run Code Online (Sandbox Code Playgroud)

对于PHP 5中的对象,其中一些不那么令人不愉快,但我认为它的核心是相同的,所以这些示例应该仍然有效.