Thema: Kopie und Referenz


Bei der Übergabe von Parametern an eine Funktion kann es vorkommen, dass Sie einen der übergegebenen Parameter verändern müssen.
PHP bietet hier zwei Möglichkeiten an:

  • Übergabe der Parameter als Kopie (call-by-value): Eine veränderung der Kopien hat keine Rückwirkung auf das Orginal. Diese Methode wird zum Beispiel angewendet, wenn die Daten nur in eine Richtung flieβen, also nur Werte an der Funktion übergeben werden.
  • Übergabe der Parameter als Referenz auf das Orginal (call-by-reference): Eine veränderung hat Rückwirkung auf das Orginal. Diese Methode wird angewendet, wenn die Funktion mehr als einen Wert ermitteln und liefern soll.

Das folgende Beispiel zeigt die Funktionen referenz_tauschen() beziehungsweise value_tauschen() für die beide Methoden:

Beispiel)


<?php
function value_tauschen($a, $b) {
    $temp = $a;
    $a = $b;
    $b = $temp;
}
function referenz_tauschen(&$a, &$b) {
    $temp = $a;
    $a = $b;
    $b = $temp;
}
$x = 12;   $y = 18;
echo "<p>Methode 1, vorher: $x, $y<br />";
value_tauschen($x,$y);
echo "Methode 1, nachher: $x, $y</p>";
$x = 12;   $y = 18;
echo "<p>Methode 2, vorher: $x, $y<br />";
referenz_tauschen($x,$y);
echo "Methode 2, nachher: $x, $y</p>";
?>

Ausgabe)

Methode 1, vorher: 12, 18
Methode 1, nachher: 12, 18

Methode 2, vorher: 12, 18
Methode 2, nachher: 18, 12