Frage von kaVonChemie153, 61

PHP return alternative?

ich suche etwas , was "return " ersetzen kann aber nicht die funktion beendet (in dem fall eine for schleife) und einfach danach den nächdten durchlauf ausführt.... oder muss man sowas aufwendig mit IF machen ?

Antwort
von fluffiknuffi2, 11

Nein, das geht nicht. Oder du meinst etwas anders. return steuert den Programmablauf. Das Programm kann sich immer nur an einer Stelle gleichzeitig befinden - außer du möchtest mit nebenläufigen ("parallel" laufenden) Prozessen/Threads arbeiten. Falls nicht, dann kannst du nicht einerseits mit der aufrufenden Funktion fortfahren (aufgrund des returns) und gleichzeitig die aufgerufene fortsetzen.

Vermutlich ist das aber auch gar nicht nötig und du musst nur deine Architektur ändern. Wild geraten: Vielleicht solltest du deinen Array als Referenz an die Funktion übergeben?

Antwort
von Balco, 48

Wenn du die Schleife verlassen willst kannst du break; verwenden, aber um nun den aktuellen Durchlauf der Schleife zu überspringen musst du schon mit einem if arbeiten.

Kommentar von Balco ,

Siehe Antwort von @ceevee, daran habe ich nicht gedacht.

Antwort
von ceevee, 43

Du suchst "continue"

http://php.net/manual/de/control-structures.continue.php

Kommentar von kaVonChemie153 ,

naja return hat ja meines wissens nach noch die aufgabe einen rückgabe wert zu liefern ... continue nicht

Kommentar von ceevee ,

Kannst du ein Stück Beispielcode geben, was du meinst? Wenn du in einer Funktion etwas zurückgeben willst, dann brauchst du zwangsläufig ein return. Das sollte dann aber nicht in der Schleife sein, sondern dahinter. Und innerhalb der Schleife kannst du dann mit continue Durchläufe überspringen, wie du lustig bist.

Kommentar von kaVonChemie153 ,

meine idee: bei jedem durchlauf der schleife einem "2d" array etwas anhängen in der zweiten ebene.  $a[$x][$y] = $x % $y , mit jedem durchlauf erhöht sich y um 1 und der rest wird abgespeichert, x erhöht sich durch die übergeordnete schleife um 1

Kommentar von ceevee ,
a = new Array;
for (x = 0; x < 5; x++) {
for (y = 0; y < 5; y++) {
a[x][y] = x % y;
}
}
return a;

So würde ich das lösen - kein Continue, aber 2 verschachtelte for-Schleifen. Ich hab gerade kein PHP zum testen hier, deswegen nur Pseudocode.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten