wahsaga: call by value/call by reference

Beitrag lesen

hi,

Hier hätte ich gedacht, das return die Variable überschreibt.

return überschreibt gar nichts, sondern gibt einen Wert zurück.

Was _du_ dann mit dieser Rückgabe machst, hängt von _dir_ ab.

$xss_briefe_indexe_neu_in[$i]=briefe_index_eins_mehr($string_brief_index);

Hier weist du die Rückgabe deiner Funktion briefe_index_eins_mehr(), mit dem Parameter $string_brief_index aufgerufen, dem Array-Element $xss_briefe_indexe_neu_in[$i] zu. Dieses Array-Element ist also bei diesem Statement das jenige, dessen Wert sich ändert.

Warum sollte $string_brief_index sich an dieser Stelle ändern - weil die Funktion mit return etwas zurückgibt? Nein.

Skalare Variablen werden beim Funktionsaufruf immer als Kopie übergeben (call by value) - selbst wenn du innerhalb der Funktion den Wert veränderst, veränderst du damit nicht den Wert des "Originals".

Wenn du wolltest, _dass_ eine Änderung innerhalb der Funktion auch den Wert außerhalb ändert, dann müsstest du die Variable als Referenz übergeben - call by reference.

Weiteres dazu unter http://www.php.net/manual/de/functions.arguments.php und http://www.php.net/manual/de/language.references.php.

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }