Tom: Call by Reference

Beitrag lesen

Hello,

http://www.php.net/manual/en/functions.arguments.php

Das ist etwas schwabbelig ausgedrückt im Manual. Sollte das bei PHP ggf. auch möglich sein, Funktionsaufrufe nur temporär für Call by Refenence zu verwenden, indem man das & erst beim Aufruf verwendet? Ich kann es im Moment leider nicht selber ausprobieren.

Ok, ausprobiert:

<?php   ### reference.php ###

function rechne($b, $n, &$ergebnis1, &$ergebnis2)
  {
    $ergebnis1 = $b*$n;          ## Ergebnisse stehen immer links von der Zuweisung!
    $ergebnis2 = $b+$n;
    $b = $ergebnis1;
    $n = $ergebnis2;
  }

$q=7;
  $w=5;

echo "vorher: $q, $w <br />";                 ## liefert 7 ,5
  rechne($q,$w,$ergebnis1, $ergebnis2);
  echo "nachher: q = $q, w = $w <br>";          ## liefert q = 7, w = 5
  echo "nachher: $ergebnis1, $ergebnis2 <br>";  ## liefert 35, 12

echo "vorher: $q, $w <br />";                 ## liefert 7, 5
  rechne(&$q,&$w,$ergebnis1, $ergebnis2);
  echo "nachher: $q, $w <br>";                  ## liefert 35, 12

?>

Erinnerung aufgefrischt:
Man kann also in PHP den Call by Reference auch temporär verwenden, indem man die Funktion erst beim Aufruf dazu veranlasst, "den Rückweg zu öffnen"...

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau