einfache for-Schleife mit return-Rückgabewert
mustino
- php
Hallo,
ich verstehe nicht, wieso eine return-Anweisung die Schleife bzw. die Methode nicht beendet?
Ich habe folgenden einfachen Code:
Methode:
function richtig(){
$fzahl=0;
for($v=0; $v<$num_1; $v++){
if(isset($_POST["haken".$v])){
$teingabe = "eingabe".$v;
if(is_numeric($_POST[$teingabe])){
continue;
}
else{
return false;
}
}
continue;
}
return true;
}
Abfrage:
if(richtig()){
echo "richtig";
}
else{
echo "falsch";
}
Wenn in der methode die "return false" zurück gibt, dann müste doch die for-Schleife beendet werden und die ein "falsch" auf meinem Bildschirm erscheinen? Aber es erscheint jedesmal ein "richtig" ???
Ich wäre euch dankbar, wenn Ihr mir helfen könntet.
Vielen Dank im vorraus.
Gruß
Mustino
hi,
hast du bereits überprüft, ob in den entsprechenden zweig hineingesprungen wird?
gruss,
wahsaga
hast du bereits überprüft, ob in den entsprechenden zweig hineingesprungen wird?
Ja, der "false"-Zweig wird auf jeden Fall durchlaufen, das ich anhand mit der echo-funktion getestet habe. Deshalb verstehe ich den Sinn nicht.
Gruß
Mustino
hi,
ach so, das seh ich jetzt erst ...
function richtig(){
for($v=0; $v<$num_1; $v++){
...
return false;
}
...
return true;
}
return false beendest an der stelle die for-schleife.
und vor dem ende der _funktion_ schreibst du return true - also gibt deine funktion auch true zurück.
gruss,
wahsaga
Hi,
return false beendest an der stelle die for-schleife.
Nein, es beendet die Funktion.
und vor dem ende der _funktion_ schreibst du return true - also gibt deine funktion auch true zurück.
Ich hab eher $num_1 im Verdacht...
cu,
Andreas
return false beendest an der stelle die for-schleife.
Hi,
lasse ich die Funktion nicht als Funktion laufen und ersetze die "true" und "false" Rückgabewerte durch "falsch" und "richtig" dann funktioniert das ganze!
Lasse ich die "//" aber weg und lösche "falsch" und "richtig" und rufe die Funktion unten mit echo richtig()... auf bekomme ich als ergebnis bei jeder belegung immer richtig, obwohl der Zweig "falsch" durchlaufen wird!
Info:
$v ist die Zählervariable und $num_1 ist ein fester Integer in dem Fall 4.
// function richtig(){
$v=-1;
do{
$v++;
if($v!=$num_1){
if ( (isset($_POST["haken".$v])) && (! is_numeric ($_POST["eingabe".$v])) ){
//return false;
echo "falsch";
break;
}
}
else{
echo "richtig";
//return true;
}
}
while($v<$num_1);
// }
//echo richtig() ? "richtig" : "falsch";
Hi,
ich verstehe nicht, wieso eine return-Anweisung die Schleife bzw. die Methode nicht beendet?
Ich würde eher vermuten, daß der entsprechende Zweig gar nicht erreicht wird.
function richtig()
{
$fzahl=0;
wird nirgends benutzt
for($v=0; $v<$num_1; $v++)
$num_1 kommt woher? Und hat welchen Wert?
{
Diesen ganzen Block:
if(isset($_POST["haken".$v]))
{
$teingabe = "eingabe".$v;
if(is_numeric($_POST[$teingabe]))
{
continue;
}
else
{
return false;
}
}
continue;
würde ich als
if ( (isset($_POST["haken".$v])) && (! is_numeric($_POST["eingabe".$v])) )
return false;
schreiben.
}
return true;
}
if(richtig()){
echo "richtig";
}
else{
echo "falsch";
}
Würde ich als
echo richtig() ? "richtig" : "falsch";
schreiben.
cu,
Andreas