Suche Debugger ;-)
PHP Flasche
- php
0 Phil Z.0 PHP Flasche0 Phil Z.
0 Tom
Hallo zusammen.
Ich muss ein PHP programm mit einer selbst definierten Funktion schreiben, daie dass Ergebniss ueber die Parameterliste zurueckgeben soll (Ergebniss 1 = Parameter1*Parameter2 / Ergebniss 2 = Parameter1 + Parameter2). Zusaetzlich sollen alle beteiligten Zahlen ausserhalb der Funktion ausgegeben werden.
Ich habe mir folgenden Code ueberlegt:
<html>
<head>
<?php
function rechnet($b, $n)
{
$b*$n= $f;
$b-$n= $d;
$f = $b;
$d = $n;
}
?>
</head>
<body>
<?php
$q= 5;
$w= 7;
echo "vorher: $q, $w <br />";
rechnet(&$q,&$w);
echo "nachher: $q, $w";
?>
</body>
</html>
doch funktioniert er leider nicht :-(
Hat jemand eine Idee, warum nicht???? Danke!!!
Hallo.
Ergebniss 1 = Parameter1*Parameter2
Ergebniss 2 = Parameter1 + Parameter2)
Warum rechnest du dann "-"? Siehe unten:
$b-$n= $d;
Naja versuchsmal so:
<?php
function rechnet($b, $n)
{
$f = $b*$n
$d = $b-$n
return $f, $d;
}
?>
rechnet(&$q,&$w);
Wozu diese "&"?
rechnet($q,$w);
reicht.
mfg
Phil Z.
Wozu diese "&"?
Du musst wisse, ich bin gerade dabei mir PHP ueber ein buch anzulesen und in dem sind Aufgaben drin, um zu pruefen, ob man das Kapitel verstanden hat. In diesem Kapitel ging es um call-by-reference Uebergaben bei Funktionen. Der return Befehl, wurde schon im vorherigen Kapitel erklaert, weshalb ich ihn nicht verwenden darf. Das & diehnt einfach dazu das sich die Orginalvariable, aendert, wenn sich die zugehoerige Variable in der Funktion aendert.
MFG
Achso.. dann solltest du das Kapitel noch einmal überarbeiten.
Meine Funktion hast du ja schon ...
Hello,
Ich muss ein PHP Programm mit einer selbst definierten Funktion schreiben.
Das Ergebnisssoll ueber die Parameterliste zurueckgeben werden.
Ergebniss 1 = Parameter1 * Parameter2
Ergebniss 2 = Parameter1 + Parameter2
Zusaetzlich sollen alle beteiligten Zahlen ausserhalb der Funktion ausgegeben werden.
function rechnet($b, $n, &ergebnis1, &$ergebnis2)
{
$ergebnis1 = $b*$n; ## Ergebnisse stehen immer links von der Zuweisung
$ergebnis2 = $b+$n;
)
echo "vorher: $q, $w <br />";
rechnet($q,$w,$ergebnis1, $ergebnis2);
echo "nachher: $ergebnis1, $ergebnis2";
So sollte es beispielsweise klappen.
Um die Funktionsargumente in beide Richtungen benutzen zu können, muss man sie auch entsprechend deklarieren. Das macht man üblicherweise bei der Funktionsdefinition und nicht bei der Benutzung.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello,
Um die Funktionsargumente in beide Richtungen benutzen zu können, muss man sie auch entsprechend deklarieren. Das macht man üblicherweise bei der Funktionsdefinition und nicht bei der Benutzung.
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.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
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
echo $begrüßung;
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"...
Vorausgesetzt, man verwendet die missbilligte Einstellung allow_call_time_pass_reference.
echo "$verabschiedung $name";
Hello,
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"...
Vorausgesetzt, man verwendet die missbilligte Einstellung allow_call_time_pass_reference.
Ach,
sowas ähnliches hatte ich im Hinterhirn, aber nicht wiedergefunden vorhin.
Sollte man eigentlich sicherheitshalber (Programmierfehler) lieber ausschalten, oder?
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom