Return wird nicht abgearbeitet

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Return wird nicht abgearbeitet

    Hallo!

    Aufgabe ist hier herauszufinden ob ein Dateiname bereits vorhanden ist und wenn er das ist, dann soll der schon bestehende Dateiname verändert werden und die neue Datei unter dem veränderten Namen gespeichert werden. Die Methode soll so lange aufgerufen werden und der Dateiname verändert werden, bis ein Dateiname entstanden ist unter dem garantiert noch keine Datei gespeichert wurde.

    Mein Problem ist dabei das ich am Punkt "testausgabe: " absolut keinen Return-Wert bekomme. In der Zeile return "testausgabe: " . $ouput also wird nichts zurückgegeben, was mich glauben lässt das return nicht aufgerufen wird. Wie man erkennen kann habe ich auch bereits versucht die Rückgabe an anderer Stelle einzubauen, also ganz am Ende der Methode. Aber auch das hat nicht funktioniert. Was mich dabei total verwirrt ist die Tatsache das wenn ich einen Dateinamen wähle der nocht nicht vorhanden ist, return $output normal funktioniert und der noch nicht vorhandene Dateiname ausgegeben wird. .. also im else-Teil, beim if-Teil gehts nicht :-( ). Ich bin mir aber absolut sicher das der if-Teil abgearbeitet wird, da die echo-anweisung direkt vor return "testausgabe: " . $output; zum richtigen Zeitpunkt ausgegeben wird.

    Kann mir dabei bitte jemand helfen?

    PHP Code:
    class file_check {
           var 
    $index 0;

          function 
    file_c$filename ) {
                if( 
    file_exists$filename ) ){
                 
    $this->index++;
                 
    $chunks explode("."$filename );
                
    $chunksnum count$chunks ) - 1;
                    if( 
    substr_count$filename"_") ){
                   
    $filenr "_" substr$chunks$chunksnum ], strrpos$chunks$chunksnum ], "_") + ); $filenr++;
                   
    $prefile "." substr$chunks$chunksnum ], 0strrpos$chunks$chunksnum ], "_"));
                   
    $postfile "." $chunks$chunksnum ];
                   
    $this->file_c$prefile.$filenr.$postfile );
                } else {
                   
    $filenr "_" $this->index;
                   
    $postfile "." $chunks$chunksnum ];
                   unset( 
    $chunks$chunksnum ] );
                   
    $prefile "." implode$chunks );
                   
    $this->file_c$prefile.$filenr.$postfile );
                }
             } else {
                 if( 
    $this->index ){
                    echo 
    "<br />testausgabe: " $filename;
                    
    $output $filename;
                   return 
    "output: " $output;
                } else {
                    
    $output $filename;
                   return 
    $output;
                }
             }
             
    //echo $output;
    // return "output: " . $output;
          
    }
       }
       
    $test = new file_check;
           
    $valid_file $test->file_c$_SESSION['uploaddir'] . $_FILES['newPic']['name'] );
            echo 
    "<br /><br />valid_file: " $valid_file
    Last edited by asscareth; 26-06-2005, 22:04.

  • #2
    Re: Return wird nicht abgearbeitet

    Original geschrieben von asscareth
    beim if-Teil gehts nicht
    Da steht ja auch kein return
    Ich denke, also bin ich. - Einige sind trotzdem...

    Comment


    • #3
      ich sehe da 2 return-anweisungen und eine auskommentierte. ich habe es mit der auskommentierten bereits versucht. das funktionierte leider nicht. und es funktioniert leider nur die returnanweisung im else-teil der if-anweisung. mag sein das ich nicht verstanden habe was du meinst. wäre nett von dir wenn du den code-teil, den du meinst noch einmal quoten könntest. ich jedenfalls meine diesen hier:

      PHP Code:
               } else {
                   if( 
      $this->index ){
                      echo 
      "<br />testausgabe: " $filename;
                      
      $output $filename;
                     return 
      "output: " $output;
                  } else {
                      
      $output $filename;
                     return 
      $output;
                  }
               }
               
      //echo $output;
      // return "output: " . $output; 

      Comment


      • #4
        Schau dir die Struktur der Funktion doch mal an!
        PHP Code:
        function file_c() {
          if ( 
        bedingung1 ) {
            
        // kein return hier
            
        if ( bedingung2 ){
              
        // auch hier KEIN RETURN
            
        } else {
              
        // hier auch nicht
            
        }
          } else {
            if( 
        bedingung3 ){
              return 
        "output: " $output;
            } else {
              return 
        $output;
            }
          }
          
        // return "output: " . $output;

        Man erreicht kein return, wenn bedingung1 = true. Genau das wird bei dir passieren.

        Und nun komm mal ausm Mustopp und mach paar Debugging-Ausgaben!

        Comment


        • #5
          @asscareth: Bei nem 19" TFT habe ich einen Scrollbalken. Bitte die Regeln beachten!

          Comment


          • #6
            so passt mein post auf einen 19" er.

            Comment


            • #7
              Original geschrieben von asscareth
              so passt mein post auf einen 19" er.
              Na, dann hast du die Regel aber nicht richtig gelesen, oder? Da ist die Rede von einer 1024er auflösung! Bitte fürs nächste Thema berücksichtigen...

              Comment

              Working...
              X