2010-06-04 35 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