2016-08-05 18 views
-5

Werden Arrays per Referenz oder Wert in PHP übergeben?Werden Arrays per Referenz oder Wert in PHP übergeben?

Zum Beispiel, lassen Sie uns diesen Code sehen.

function addWeight($arout, $lineCountry, $lineDomain, $target, $weight) 
{ 
    $currentDomain=getDomain(); 
    $currentCountry=getCountry(); 

    if ($currentCountry==$lineCountry && ($currentDomain == $lineDomain || $lineDomain=="")) 
    { 
     $tarobreakpoint=0; 
     $arout [$target] = intval($weight); 
    } 

    return $arout; 
} 

Im Grunde genommen dauerte es ein Array als Parameter. Abhängig von einigen Umständen fügt es dem Array Elemente hinzu. Ich frage mich, ob das effizient ist? Wenn $arout durch Referenz wie alle Arrays übergeben wird, dann denke ich, es ist effizient. Aber wenn es nur kopiert und nach Wert weitergegeben wird, dann ist es das nicht.

Also, was ist das Urteil?

+0

http: // Stackoverflow. com/questions/2030906/are-arrays-in-php-pass-by-value-or-by-reference? rq = 1 –

+0

Mögliche Duplikate von [Sind Arrays in PHP nach Wert oder Verweis?] (http://stackoverflow.com/questions/2030906/are-arrays-in-php-passed-by-value-or-by-reference) – halfer

Antwort

1

Nach dem manual, PHP Arrays werden von Wert übergeben:

Array Zuordnung ist immer Wert Kopieren. Verwenden Sie den Referenzoperator, um ein Array als Referenz zu kopieren.

Wenn Sie mögen eine Arrays Referenz zu übergeben, den entsprechenden Operator (&), wie oben erwähnt, und entfernen Sie die return $arout; Linie in der addWeight() Funktion:

<?php 
// pass $array by reference using & operator 
addWeight(&$array, $lineCountry, $lineDomain, $target, $weight);