Tom: Zufallsystem - Wieso microtime?

Beitrag lesen

Hi Andy,

aufruf schön und gut aber wie bekomme ich die variablen aus der funktion, im prinzip hätte ich es gern so, dass die ganze funktion so arbeiten würde als ob sie garkeine wäre und alle variblen global wären - gibt es nicht sowas wie global_all oder so?

Hatten wir das nicht schon? :-) Könnte aber auch ein anderer Thread gewesen sein *grins*

$ergebnis = functionVon($argument);

Das wäre ein "normaler" Funktionsaufruf. Jede Funktion liefert genau einen Rückgabewert.

PHP kann mehr:

$ergebnisArray = function($argument1, $argument2, $inputArray);

Jede Hochsprache kann auch noch den "Call By Reference":

$daten = [typ];  ### Allokation von Speicher

$ergebnis = function(&$daten);

Das Kaufmannsund vor dem Argument besagt nun, dass nicht eine Kopie von $daten an die Funktion zur freien Verwendung übergeben wird, sondern die Adresse von $daten im Speicher. Darum mussten wir auch vorher Speicherplatz dafür anlegen (allokieren).

Nun kann die Funktion mit $daten nicht mehr machen, was sie will, sondern muss aufpassen, was sie intern damit veranstaltet. Das externe $daten und das funktionsinterne sind nämlich nun identisch. Es gibt also nur noch ein $daten. Das ist fast so, wie GLOBAL, nur dass man den Übergabe-Parameter noch freie wählen kann. Bei GLOBAL ist der ja fest verdrahtet in der Funktion. Funktionen mit GLOBAL haben daher Reentranzprobleme. Man darf sie nich ohne weiteres rekursiv verwenden. VAR (Variable Access Reference) oder "Call by Reference" - Aufrufe sind da schon vorteilhafter.

Ich habe mit inzwischen die Variante mit dem Rückgabearray angewöhnt, wenn genügend Speicher zur Verfügung steht.
Ein VAR-Aufruf benötigt nämlich ggf. weniger Arbeitsspeicher, weil die Variable nicht vor Funktionsaufruf kopiert werden muss.

Ich hoffe, nun hast Du einige Anregungen bekommen.

Grüße

Tom