2010-06-04 30 views
3

做我有这样的代码&是什么在PHP

$myNewClass->cars =& Orders_Car::GetRecords($myNewClass->searchString); 
       ^

什么&在那里做什么。 谢谢

回答

4

由PHP专家约翰内斯SCHLÜTER阅读Do not use PHP references

PHP引用是从PHP 4,缓缴那里对象是由价值参照,除非传递,而不是你故意通过参考来制作它们。这在使用PHP 5时不是必需的,因为所有对象都始终通过PHP 5中的引用进行传递。

默认情况下,标量和数组在PHP 5中仍然按值传递。如果需要通过引用传递它们,则应该只使用一个对象。

+0

这不完全正确,在PHP 5中有引用的有效用法(例如,在数组上构建一个类似图形的结构,或者通过引用或下面的foreach示例构建__get) - 但对象和引用不应混用,这是正确的。 – StasM 2010-06-06 09:54:01

6

它将变量更改为'通过引用传递'。这与将变量的副本传入相反。

有关详细信息,请参阅the manual

一个常见的用途是foreach

通常,foreach对可迭代数组或对象的副本进行操作。

这意味着

$salad=array(1,2,3); 
foreach ($salad as $leaf){ 
    $leaf+=1; 
    } 
echo $salad[0];// output: 1 

foreach ($salad as &$leaf){ 
    $leaf+=1; 
    } 
echo $salad[0];// output: 2 because & made the assignment affect the original array 
+2

请注意,您也可以通过引用来分配: '$ a = & $b;'将表示当您执行'$ b = 1;'时,'$ a'会自动更改为1 – phsource 2010-06-04 16:30:55

+0

...并且返回参考。这就是为什么我改为投了greg0ire。 – Artefacto 2010-06-04 16:45:45

+0

的确如此,我想,还有比通过引用传递更多的东西。也许有人想创建一个覆盖所有这些方面的答案,而不仅仅是一个链接到文档?另一方面,我猜这个问题是重复副本的副本。 – JAL 2010-06-04 17:13:14