Ankündigung

Einklappen
Keine Ankündigung bisher.

Rückgabewerte von Funktionen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rückgabewerte von Funktionen

    Hallo,

    ich habe eine Funktion geschrieben, diese soll aber nicht nur irgendeinen Wert zurückgeben, sondern eine komplette Variable.

    PHP-Code:
    <?php

    function message($text){
    $message=$text;
    return 
    $message;
    }

    message("Hallo");
    echo 
    $message;

    ?>
    Wie mach ich sowas?


  • #2
    Re: Rückgabewerte von Funktionen

    Zitat von nh2
    Wie mach ich sowas?
    http://www.php.net/functions

    Kommentar


    • #3
      Dafür müsstest du mit Referenzen arbeiten:
      PHP-Code:
      <?php
          
      function message($text, &$message)
          {
          
      $message $text;
          }
      ?>

      Kommentar


      • #4
        Freund der Nacht, denkt doch mal etwas nach!!!

        Nehmen wir die simple Funktion strlen (falls du die tatsächlich doch nicht kennen solltest: http://de2.php.net/manual/de/function.strlen.php) Der Rückgabewert dieser Funktion läßt sich speichern oder ausgeben:

        $var = strlen("Hallo");
        echo strlen("Hallo");

        Wie kommst du jetzt darauf, dass das bei deiner Funktion plötzlich anders funktionieren sollte???

        Gruß
        phpfan

        Kommentar


        • #5
          Re: Rückgabewerte von Funktionen

          PHP-Code:
          <?php

          function message($text){
          $message=$text;
          return 
          $message;
          }

          message("Hallo");
          echo 
          $message;

          ?>
          LOL, ROLF und ich lachen uns hier grad kaputt...So nen blöden Quellcode hab ich ja noch nie gesehen.

          Kommentar


          • #6
            @Zergling: Tolle Hilfe.

            @die anderen:

            Ich hab jetzt kapiert, dass ich das irgendwie mit Referenzen machen muss und hab das mal nachgeguckt, aber so richtig hilft mir die Onlinehilfe von PHP dabei auch nicht.
            Ich erklär mal mein Problem ein bisschen genauer (sonst könnt ich es ja auch, wie schon genannt, einfach wie "echo strlen("Hallo); " machen.

            Also, ich hab ein Formular, in dem verschiedenen (Fehler)Meldungen auftreten könnnen. So zum Beispiel:

            PHP-Code:
            if( --- Formular nicht ausgefüllt --- ){
            $message="Bitte das Formular korrekt ausfüllen.";
            }


            if( --- 
            Benutzername existiert bei der Anmeldung schon --- ){
            $message="Bitte wähle einen anderen Benutzernamen!";
            }

            if( --- 
            Alles OK --- ){
            $message="Anmeldung erfolgreich".
            }

            echo 
            "[b]".$message."[/b]"
            So, das wichtige ist jetzt, dass in den Fällen 1 und 2 die Anmeldung fehlgeschlagen ist und in Fall 3 hat sie funktioniert. Eine Fehlschlagsmeldung soll immer ROT ausgegeben werden, eine Erfolgsmeldung BLAU. Dann hab ich mir sowas überlegt:

            PHP-Code:
            function message($text,$farbe){
               
            $message="<font color='".$farbe."'>".$text."</font>";
               return 
            $message;

            Diese Funktion soll dann so Funktionieren, dass ich sie so aufrufe:

            PHP-Code:
            message("Bitte das Formular korrekt ausfüllen.","red"); 
            und danach soll die Meldung immer noch mit dem einfachen Befehl
            echo $message
            ausgegeben werden können. Die Funktion ist also dazu gut, dass ich nicht jedesmal bei jeder Meldung die Font-Color einstellen muss, sondern kurzwörter (wie "red" oder z.B. auch 1,2,3 zu verwenden).

            Wie lässt sich sowas machen?

            Kommentar


            • #7
              och bitte, schau wenigstens auf die links die
              wir dir geben... was ist dennso schlimm daran, wenn du einfach

              PHP-Code:
              <?php
              $message 
              message("Bitte das Formular korrekt ausfüllen.","red");
              ?>
              schreibst?

              Kommentar


              • #8
                Leute... Jeder fängt mal an.....

                Erst mal eine Erklärung:
                Eine Function grenzt sich fanst ganz ab von dem rest der programmierung, variablen sind nur auf bestimmte werten zu ändern.

                Beispiel1: Global
                Code:
                Function Message($Wert1)
                {
                //Mit Global wird die Variabel Algemein, Wenn man es in der function ändert, ändert Sie sich auch auserhalb
                Global $Message;
                $Message=$Wert1;
                }
                
                Message("Hello World");
                //Ausgabe ist: Hello World
                Echo $Message;
                (Ich mache gleich weiter erstmal was anderes machen ^^')

                Kommentar


                • #9
                  PHP:
                  <?php
                  $message = message("Bitte das Formular korrekt ausfüllen.","red");
                  ?>
                  Jo, sowas geht, da hast du recht.
                  Die Links hab ich mir schon alle angeguckt.

                  Es ist ja einfach nur, dass ich wissen will, ob es anders geht. Sowas nennt mann Wissensdurst
                  Wo kommt man denn hin, wenn man immer nur auf andere Methoden ausweicht und nicht versucht, was neues zu lernen?

                  Kommentar


                  • #10
                    @Niroko:

                    Danke, super, das ist genau das, was ich meine. Mit global hatt ichs auch schon mal versucht, aber das hat nicht geklappt. Das funktioniert wunderbar, danke :P

                    Kommentar


                    • #11
                      Np, und deine PN schon gelesen?

                      Kommentar


                      • #12
                        Zitat von nh2
                        Mit global hatt ichs auch schon mal versucht, aber das hat nicht geklappt. Das funktioniert wunderbar, danke :P
                        Lass dir gesagt sein, dass diese Methodik des globals schlecht ist. Denn was wenn du jetzt noch eine andere Funktion hast, die ähnlich funktioniert, zum Beispiel eine Überschriften-Funktion

                        PHP-Code:
                        <?php
                        function title($text)
                        {
                          global 
                        $message;
                          
                        $message sprintf('<h1>%s</h1><hr />'$text);
                        }
                        ?>
                        Dann kommst du komplett durcheinander. Denn woher kommt denn jetzt deine $message-Variable? Irgendwann verlierst du den Überblick, aber das ist nicht nötig.

                        Was spricht also gegen einen einfachen "return"?

                        Das Argument "ich will etwas neues ausprobieren" ist schön und gut, aber doch bitte nichts sinnloses unübersichtliches, nur weils für dich neu ist...

                        Kommentar

                        Lädt...
                        X