Ankündigung

Einklappen
Keine Ankündigung bisher.

auf eine andere art auf gültige vars prüfen.

Einklappen

Neue Werbung 2019

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

  • auf eine andere art auf gültige vars prüfen.

    wollte mal fragen, ob und wie das gehen könnte, variablen zu prüfen. Also ich habe eine nicht definierte anzahl an variablen, die immer mit "vormerk" anfangen.. also:
    $vormerk1
    $vormerk2
    $vormerk3
    $vormerk4

    sind gesezt aber $vormerk5 nicht mehr. hatte mir vorgestellt, die in eine while-schleife mit erhöhender zahl auf gültigkeit zu prüfen.:

    PHP-Code:
    $x 1;
    $arr = array();
    while(
    $gueltig == true){
        
    $temp "$vormerk".$x;
        if(!isset($
    $temp)){
            
    $gueltig false;
        }
        else{
            
    $arr[$x] = $temp;
        }
        
    $x++;

    woher ich nich weiß ob diese lösung n bisschen umständlich oder so is. Was meint ihr dazu?

    MFG Michael S.

  • #2
    Wie entstehen diese Variablen? Kannst Du da nicht gleich einen Array draus machen?

    Damit koenntest Du die Abfrage auf eine Zeile reduzieren, indem Du nur noch
    PHP-Code:
    $iCnt count(array); 
    aufrufst.
    Inhalt der Variable $iCnt+1 ist dann Deine ANzahl an Variablen, die gesetzt ist.

    Gruß

    Kommentar


    • #3
      Ansich klappt dein Lösungsweg!

      PHP-Code:
      <?php

      function check_vars($varname)
      {
        
      $i 1;

        while(
      $valid == true)
        {
          if (!isset(
      $varname.$i$valid == false;
          
      $i++;
        }

        return 
      $i;
      }

      $vormerk1 5;
      $vormerk2 4;
      $vormerk3 7;
      $vormerk4 31;

      echo 
      "\$vormerk".check_vars($vormerk)." existiert nicht!
      "
      ;
      echo 
      "\$vormerk".check_vars($vormerk) -1." existiert!";

      ?>
      Um es mal als Funktion zu schreiben. Ich kann es aber nicht überprüfen, da ich hier beim Praktikum bin.

      Allerdings muss ich pepe24 recht geben. Es geht viel einfacher, wenn man die Inhalte der Variablen in ein Array schreibt. Es kommt halt drauf an, wie die Variablen entstehen.

      Kommentar


      • #4
        Zitat von pepe24
        Kannst Du da nicht gleich einen Array draus machen?
        Die einzig sinnvolle Antwort, die man dir auf diese Frage geben kann

        Kommentar


        • #5
          Also Matze was du da geschrieben hast ist aber mal vorn und hinten falsch!

          check_vars($vormerk) übergibt dir nicht den Variablennamen sondern den Inhalt der Variable ... in deinem Beispiel kommt ein Notice dass $vormerk aber nicht definiert ist.

          Dann fehlt ne Klammer in Zeile 9.

          isset() kannst du nicht mit 2 Variablen füttern also $varname.$i funktioniert genauso wenig. Außerdem läuft deine Schleife nicht unbedingt bis zum Ende, falls es so funktionieren würde wie du es programmiert hast. Es würde z.b. bei $vormerk1, $vormerk2, $vormerk4 die 4 einfach weglassen das die 3 nicht existiert und dort hört die Funktion auf.

          Also da sind einige schwerwiegende Fehler (Funktionsaufruf haste nicht verstanden und isset() funktioniert so nicht).

          Es müssten wenn schon variable Variablen verwendet werden aber diese können eigentlich IMMER durch Arrays ersetzt werden.

          Kommentar


          • #6
            Ahh, ein paar kleine Fehler, sorry!

            PHP-Code:
            <?php 

            function check_vars($varname

              
            $i 1

              while(
            $valid == true
              {
                
            $varname $varname.$i;
                if (!isset($
            $varname$valid == false
                
            $i++; 
              } 

              return 
            $i


            $vormerk1 5
            $vormerk2 4
            $vormerk3 7
            $vormerk4 31

            echo 
            "\$vormerk".check_vars("vormerk")." existiert nicht!
            "

            echo 
            "\$vormerk".check_vars("vormerk") -1." existiert!"

            ?>
            Bei "$$varname" bin ich mir allerdings nicht mehr sicher, ob das wirklich so funktioniert ...
            Das Problem mit "vormerk1, vormerk2, vormerk4" kann man gar nicht lösen. Es kommt halt drauf an, was man wissen will. Wenn man den ersten Wert ermitteln will, der die "Schleife" unterbricht, dann geht das schon so. Wenn man wissen will, wieviele Elemente es gibt, muss man wohl mit Arrays und count() arbeiten, womit man sowieso arbeiten sollte. Deshalb ist das ganze auch Jacke wie Hose.

            Kommentar


            • #7
              Und schonmal dran gedacht das die Variablen $vormerk 1-4 garnicht in der Funktion verfügbar sind? Sind ja keine globalen Variablen und die Funktion hat einen eigenen Variablenraum ...

              Außerdem wo ist das Problem ein Array zu haben und es mit foreach durchlaufen zu lassen ... ist doch wesentlich einfacher und man kann, egal ob die 3 oder ne andere Zwischenzahl fehlt, alle durchgehen.

              $vormerk = array(
              1 => 5,
              2 => 4,
              3 => 7,
              4 => 31
              );

              Kommentar


              • #8
                Zitat von RaZoR
                Und schonmal dran gedacht das die Variablen $vormerk 1-4 garnicht in der Funktion verfügbar sind? Sind ja keine globalen Variablen und die Funktion hat einen eigenen Variablenraum ...
                Ist das nicht egal, wenn die Funktion sich in der gleichen Datei befindet? Das wäre in dem Fall natürlich wichtig. Ansonsten wärs total auswegslos ...

                Kommentar


                • #9
                  Es ist egal wo die Funktion sich befindet. Wenn du mit include() arbeitest dann gibt es sowas wie "Dateien" nicht. Dann steht ansich der ganze Quelltext aller includeten Dateien in der Hauptdatei, also so kann man sich das vorstellen.

                  Und Variablen sind über alle Dateien verfügbar, bei richtigem include etc.
                  ABER sie sind nie in Funktionen verfügbar außer es sind globale Variablen, werden mit "global $vormerk" in der Funktion verfügbar gemacht, es sind Konstanten oder werden als Parameter übergeben.

                  Kommentar


                  • #10
                    Zitat von RaZoR
                    Es ist egal wo die Funktion sich befindet. Wenn du mit include() arbeitest dann gibt es sowas wie "Dateien" nicht. Dann steht ansich der ganze Quelltext aller includeten Dateien in der Hauptdatei, also so kann man sich das vorstellen.

                    Und Variablen sind über alle Dateien verfügbar, bei richtigem include etc.
                    ABER sie sind nie in Funktionen verfügbar außer es sind globale Variablen, werden mit "global $vormerk" in der Funktion verfügbar gemacht, es sind Konstanten oder werden als Parameter übergeben.
                    Gut, bei etwas "Größerem" geht das nicht. Bei so etwas mit "global" zu arbeiten, lohnt sich eh nicht, dann kann man es gleich völlig linear schreiben!

                    Denke aber, dass das Thema gegessen ist, mit Arrays wirds gemacht.

                    Kommentar


                    • #11
                      Zitat von Matze
                      Denke aber, dass das Thema gegessen ist, mit Arrays wirds gemacht.
                      Ich denke, darüber sind wir uns einig. Für andere Fälle kann statt global $vormerk_n und $$vormerk_n natürlich auch $GLOBALS[$vormerk_n] verwendet werden. Womit man dann zwei Probleme auf einmal gelöst hat.

                      Kommentar


                      • #12
                        jo alles klar... danke

                        Kommentar

                        Lädt...
                        X