VariablenNamen in for Schleife erzeugen/ändern ?

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

  • VariablenNamen in for Schleife erzeugen/ändern ?

    Eine abzufragende Variable muss sich bei jedem Durchlauf ändern. Deshalb versuche ich diese aus $t.$m zusammenzusetzen. Das geht aber nicht. Wie geht es?

    PHP-Code:
        for($m =0;$m 12;$m++)
            {
                if (
    $monat[1] == $m)
                {
                    if (!isset(
    $t.$i))
                    {
                    echo 
    "$i";
                    
    $t.$i true;
                    }
                    echo 
    "Inhalt";
                }
            } 
    Zuletzt geändert von janein; 07.04.2008, 12:49.

  • #2
    PHP-Code:
    ${$t.$i} = true
    Und so?
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Variable Variablen zeugen in der Regel von einem Design-Fehler. Ich würde auch den Teufel tun das zu empfehlen.
      [FONT="Helvetica"]twitter.com/unset[/FONT]

      Shitstorm Podcast – Wöchentliches Auskotzen

      Kommentar


      • #4
        Variable Variablen zeugen in der Regel von einem Design-Fehler. Ich würde auch den Teufel tun das zu empfehlen.
        Gebe ich dir absolut recht. Nur der TS wollte es so...
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Original geschrieben von unset
          Variable Variablen zeugen in der Regel von einem Design-Fehler. Ich würde auch den Teufel tun das zu empfehlen.
          Wo ist in dem Eingangsposting der Designfehler?

          Ich möchte mit diesem code alle Monate abfragen und in jeder Abfrage muss eine neue Variable auf null gesetz werden. Was empfiehlst Du für dieses Problem?

          Ich habe es jetzt so gemacht, und es geht. Allerdings mit haufenweisen
          Notice: Undefined variable: t ...
          Wie vermeide ich die wo doch nur t angemeckert wird aber die var var doch t1 - t12 heißt?
          PHP-Code:
          ...
          if (!isset(${
          $t.$m}))
                          {
                          
          fprintf($fp$format"$t$m");
                          ${
          $t.$m} = true;
                          }
          ... 
          Zuletzt geändert von janein; 07.04.2008, 13:20.

          Kommentar


          • #6
            Woher resp wo wird $t definiert?
            Deshalb versuche ich diese aus $t.$m zusammenzusetzen
            Darum verwendest du beim Zusammensetzen $i
            Was empfiehlst Du für dieses Problem?
            z.B. Arrays

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Original geschrieben von jahlives
              ... z.B. Arrays ...
              Ok, diese
              Notice: Undefined variable: t ...
              bin ich durch
              PHP-Code:
              $t=""
              vor der Schleife losgeworden.

              Warum ist das ein Designfehler und wie und warum sollte ein array in diesem Fall besser sein?
              Zuletzt geändert von janein; 07.04.2008, 13:30.

              Kommentar


              • #8
                Original geschrieben von janein
                Warum ist das ein Designfehler und wie und warum sollte ein array in diesem Fall besser sein? [/B]
                Der erste Designfehler ist schonmal, dass du nichtssagende Variablennamen benutzt. Was ist $t? Woher kommt $i? Meinst du evtl. $m? Außerdem wissen wir nicht genau, was du machen willst.
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  Es solle eine Art Kalender Gliederung erzeugt werden.

                  $m = wird in der for Schleife erzeugt und soll die Monate repräsentieren.
                  $t = wird nur verwendet, um sich von $m zu unterscheiden, da sie bei jedem Durchlauf false sein soll. So soll ein Array durchlaufen und unter dem Monatsnamen einsprechenden Werte aus den Monaten ausgegeben werden.
                  ($i ist überflüssig)

                  PHP-Code:
                  $t="";
                  for(
                  $m =0;$m 12;$m++)
                          {
                              if (
                  $monat == $m)
                              {
                                  if (!isset(${
                  $t.$m}))
                                  {
                                      echo 
                  $t$m;

                                  ${
                  $t.$m} = true;
                                  }

                              }
                          } 

                  Kommentar


                  • #10
                    Meine Frage wäre noch: Ändert sich $t jemals oder ist das immer ein Leerstring? Wenn immer Leerstring, warum dann verknüpfen? Das würde ja auf's gleiche herauskomen wie ${$m}
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Original geschrieben von jahlives
                      ... Ändert sich $t jemals oder ist das immer ein Leerstring? ...[/B]
                      Nein, also --> ${$m}

                      Noch einmal meine Frage: Warum und wie wäre eine Array besser als ${$m}?

                      Kommentar


                      • #12
                        PHP-Code:
                        $t[$m
                        ist zum Beispiel viel besser!!

                        Kommentar


                        • #13
                          Noch einmal meine Frage: Warum und wie wäre eine Array besser als ${$m}?
                          Alleine um festzustellen wieviele Werte (Vars du hast) bieten sich Array an. Bei deiner Version hast du sonst so 'aussagekräfte' Varnamen wie z.B. $0 und $1, die afaik in PHP üngültig wären, da Vars nicht mit Zahlen beginnen dürfen
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            Original geschrieben von PHP-Desaster
                            PHP-Code:
                            $t[$m
                            ist zum Beispiel viel besser!!
                            So habe ich es gemacht, doch jetzt hagelt es mehr den je
                            Notice: Undefined offset:
                            Vorher gab es die nicht mit ${$m}. Diese blöden offset Meldung plagen mich irgendwie und ich weis wieder nicht wie ich sie loswerden kann
                            $t0""; bringt nichts.
                            PHP-Code:
                            $t "";
                                for(
                            $m =0;$m 12;$m++)
                                    {
                                        if (
                            $monat[1] == $t[$m])
                                        {
                                            if (!isset(
                            $t[$m]))
                                            {
                            $monatstr = array("Aprill","Mai","Juni");
                                            
                            fprintf($fp$format"$t[$m]");

                                            
                            $t[$m] = true;
                                            } 
                            Zuletzt geändert von janein; 07.04.2008, 14:36.

                            Kommentar


                            • #15
                              Original geschrieben von janein
                              Warum ist das ein Designfehler und wie und warum sollte ein array in diesem Fall besser sein?
                              Als ich mit PHP begonnen hab, hab ich auch mit variablen Variablennamen rumgemacht - warum? Weils in dem Buch gestanden ist, mit dem ich PHP zu lernen angefangen hab. Das Buch find ich heute immer noch ned schlecht für nen Einsteiger, aber die Seiten wo das mit den variablen Variablennamen drankam gehören rausgerissen - ich hatte mir damals einen sehr schlechten, teils äußerst umständlichen Programmierstil angewohnt

                              @janein
                              Ich habe die Erfahrung gemacht dass alles was man mit variablen Variablennamen machen will, sehr viel besser/bequemer mit Arrays geht. Ich sehe deshalb so ein Rumgewürge prinzipiell auch als "Designfehler" an.

                              Nimm Arrays

                              Nimm dir mal etwas Zeit und schau dir die Latte an Funktionen an, die es im Zusammenhang mit Arrays gibt -> http://de.php.net/array
                              Du wirst schnell sehen, dass sie dir evtl. viel Arbeit abnehmen, die du dir bisher gemacht hast, wenn du Arrays noch nicht sonderlich eingesetzt hast.
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X