mehrere Werte einer function zurückgeben
franz
- php
Hallo,
Ich würde gerne wissen ob es möglich ist mehrere Werte die in einer Funktion berechnet werden zurückzugeben bzw an andere Funktionen zu übergeben.
Vill anders als mit return.
danke
mfg
Franz
Hallo,
Ich bin kein Profi, aber man könnte ein Array verwenden...
MFG
Ich bin kein Profi, aber man könnte ein Array verwenden...
das array per return zurückgeben oder wie?
mfg
Moin!
Ich bin kein Profi, aber man könnte ein Array verwenden...
das array per return zurückgeben oder wie?
Exakt. Oder man gibt ein Objekt zurück, wenn ohnehin OOP angesagt ist.
Alternativ: Variablen als Referenz übergeben - bestes Beispiel ist die Funktion preg_match bzw. genauer der Parameter &$Treffer.
- Sven Rautenberg
Alternativ: Variablen als Referenz übergeben - bestes Beispiel ist die Funktion preg_match bzw. genauer der Parameter &$Treffer.
Die Funktion sollte immer noch das selbe returnen aber ich würde gerne zusätzlich eine variable übergeben, würde das mit dieser Methode funktionieren?
wenn ja könntest du sie mir noch ein bisschen näher erläutern?
Werde aus dem link ned schlau :(
danke schon jetzt
Franz
Hi,
Die Funktion sollte immer noch das selbe returnen aber ich würde gerne zusätzlich eine variable übergeben, würde das mit dieser Methode funktionieren?
Wozu willst du gleich bleibende Werte uebergeben?
wenn ja könntest du sie mir noch ein bisschen näher erläutern?
Werde aus dem link ned schlau :(
http://www.php.net/manual/en/functions.returning-values.php
MfG ChrisB
Wozu willst du gleich bleibende Werte uebergeben?
http://www.php.net/manual/en/functions.returning-values.php
Ich will nicht gleich bleibende Werte übergeben sondern ich will das die Funktion die ich früher mal gebastelt haben und oft in meinem script verwende immer noch die selben werte returnt(also in dem fall 1 oder 0), ich aber zusätzlich andere werte die in dieser Funktion verwendet bzw errechnet werden übergeben.
deswegen suche ich eine andere Methode als return oder komm ich da nicht drum rum?
mfg
Hi,
Ich will nicht gleich bleibende Werte übergeben sondern ich will das die Funktion die ich früher mal gebastelt haben und oft in meinem script verwende immer noch die selben werte returnt(also in dem fall 1 oder 0), ich aber zusätzlich andere werte die in dieser Funktion verwendet bzw errechnet werden übergeben.
deswegen suche ich eine andere Methode als return oder komm ich da nicht drum rum?
Du wirst sogar eine andere Methode als return benutzen *muessen*, wenn du die aufrufenden Stellen nicht anpassen willst - denn die erwarten ja nach wie vor lediglich *einen* Wert, 1 oder 0, als Rueckgabe.
Wenn du das so machen willst - dann geht Svens Vorschlag mit den Referenzen schon in die richtige Richtung.
Das solltest du dir aber noch mal ueberlegen - denn etwas "sauberes" kommt dabei vermutlich nicht heraus.
MfG ChrisB
hmm muss nicht "sauber" werden...
hab mir jezz ziemlich viel über Referenzen durchgelesen trotzdem versteh ich nicht wie das funktionieren soll auch aus diesem link preg_match wer ich nicht schlauf :(
mfg
Hi,
hab mir jezz ziemlich viel über Referenzen durchgelesen trotzdem versteh ich nicht wie das funktionieren soll auch aus diesem link preg_match wer ich nicht schlauf :(
Auf der Seite, die ich dir bereits verlinkt hatte, findest du unten:
For more information on references, please check out References Explained
MfG ChrisB
und jezz rat mal wo ich nachgeschaut hab :P
Hi,
und jezz rat mal wo ich nachgeschaut hab :P
Bestimmt nicht bei den Tipps fuer Fragende - denn sonst wuerdest du ja vielleicht eine konkrete Frage stellen, anstatt uns nur mitzuteilen, dass du "nichts verstehst".
MfG ChrisB
Habs $GLOBALS probiert aber das funktioniert nicht.
Mit einem Beispiel wäre mir sehr geholfen.
mfg
Hi,
Habs $GLOBALS probiert aber das funktioniert nicht.
Wieso zum Geier kommst du mir jetzt mit einem "funzt nich" - obwohl ich dich gerade eben auf die Tipps fuer Fragende hinwies?
MfG ChrisB
Lieber ChrisB
Ich habe nun versucht mein Problem nach folgender Methode zu lösen, welche auf einer der verlinkten Seiten gefunden hatte und mir als einleuchtend erschien:
<?php
$var1 = "Beispielvariable";
$var2 = "";
function global_references($use_globals)
{
global $var1, $var2;
if (!$use_globals) {
$var2 =& $var1; // nur innerhalb der Funktion sichtbar
} else {
$GLOBALS["var2"] =& $var1; // auch im globalen Kontext sichtbar
}
}
global_references(false);
echo "var2 wurde auf '$var2' gesetzt\n"; // var2 ist ''
global_references(true);
echo "var2 wurde auf '$var2' gesetzt\n"; // var2 ist 'Beispielvariable'
?>
Jedoch kam ich nach einigen misslungenen Versuchen und nach erneutem Überdenken dieser Methode zu dem Schluss, dass dies wohl nicht der richtige Weg ist.
Nun stehe ich erneut vor dem selben Problem und die meiner Meinung nach sehr "einsteigerunfreundliche" Art von php.net die Befehle, Funktionen und Methoden ihrer Scriptsprache zu erklären trägt ihres dazu bei, dass ich nicht weiterkomme.
Ich werden nun versuchen ihnen dazulegen was ich aufgrund der von ihnen verlinkten Seiten(bzw. indirekt verlinkten Seiten) über Referenzen gelernt habe, um es ihnen zu erleichtern mir das benötigte Verständnis zum Lösen des Problems zu vermitteln.
Mit Referenzen kann man dem gleichen Inhalt einer Variable verschiedene Namen zuweisen.
Um eine Referenz zu schaffen benutzt man den Operator =&.
Man kann auch Arrays referenzieren.
Wenn man eine undefinierte Variable referenziert wird sie erstellt.
Man kann Variablen an Funktionen per Referenz übergeben, so dass die Funktion ihre Argumente modifizieren kann. Jedoch kann ich dies so wie es auf php.net beschrieben wird und so ich wie ich es verstehe nicht zu meinen Gunsten nutzten.
Ich hoffe es fällt ihnen nun leichter mir zu helfen.
mfg
Franz
Hi,
Man kann Variablen an Funktionen per Referenz übergeben, so dass die Funktion ihre Argumente modifizieren kann. Jedoch kann ich dies so wie es auf php.net beschrieben wird und so ich wie ich es verstehe nicht zu meinen Gunsten nutzten.
Warum nicht?
MfG ChrisB
Das einzige das mir als halbwegs Sinnvoll erscheint wäre folgendes:
<?php
function altefunktion(&$var)
{
$var = 6;
}
funktion($a);
// $a ist 6
?>
mfg
Hi,
Das einzige das mir als halbwegs Sinnvoll erscheint wäre folgendes:
<?php
function altefunktion(&$var)
{
$var = 6;
}funktion($a);
// $a ist 6
?>
Aha.
Und?
MfG ChrisB
--
„This is the author's opinion, not necessarily that of Starbucks.“
Aha.
Und?
Funktionier aber jetzt muss ich erst recht überall wo ich die Funktion verwendet hab einen zusätzlichen Wert in die Klammer schreiben.
Ist das der Ansatz oder muss ich weitersuchen?
mfg
Franz
Hi,
Funktionier aber jetzt muss ich erst recht überall wo ich die Funktion verwendet hab einen zusätzlichen Wert in die Klammer schreiben.
Ist das der Ansatz
Wenn du das, was eine Funktion macht, signifikant aenderst - insb. auch, welche Werte sie veraendert/zurueckgibt - dann wuerde ich sagen, ja.
oder muss ich weitersuchen?
Globale Variablen waeren ein weiterer Weg - ebenfalls ein ggf. riskanter und nicht sonderlich sauberer.
MfG ChrisB
echo $begrüßung;
Funktionier aber jetzt muss ich erst recht überall wo ich die Funktion verwendet hab einen zusätzlichen Wert in die Klammer schreiben.
Ist das der Ansatz
Wenn du das, was eine Funktion macht, signifikant aenderst - insb. auch, welche Werte sie veraendert/zurueckgibt - dann wuerde ich sagen, ja.
Nein, das muss nicht unbedingt. Es gibt ja die Möglichkeit, Parameter wegzulassen und dafür einen Default-Wert anzugeben. Das geht auch für Referenz-Parameter. (Allerdings glaube ich mich zu erinnern, dass das nicht mit allen PHP-Versionen geht.)
function foo($a, &$b = null) {
$b = ...;
}
Das kann man nun als foo($x) oder foo($x, $y) aufrufen.
Globale Variablen waeren ein weiterer Weg - ebenfalls ein ggf. riskanter und nicht sonderlich sauberer.
Aus Funktionen heraus globale Werte zu ändern, ist in den meisten Fällen keine gute Idee. Der Zusammenhang zwischen dem Funktionsaufruf und einer "unbeteiligten" Variablen ist auf den ersten Blick nicht erkennbar. Wer diesen Weg geht, sollte ihn zumindest gut dokumentieren.
echo "$verabschiedung $name";
Naja habs jezz so gemacht.
Danke für die Hilfe
mfg
Franz
Hallo Franz,
Funktionier aber jetzt muss ich erst recht überall wo ich die Funktion verwendet hab einen zusätzlichen Wert in die Klammer schreiben.
Ist das der Ansatz oder muss ich weitersuchen?
Du hast ein Problem mit Funktionsparametern. Erste Anlaufstelle wäre somit der Handbuchabschnitt Funktionen, was - wie ich finde - naheliegend ist. Dort gibt es doch tatsächlich einen Unterabschnitt Funktionsparameter mit schönen Beispielen. PHP stellt Dir Eigenschaften zur Verfügung, die Dir weiterhelfen könnten.
Freundliche Grüße
Vinzenz