VariablenNamen in for Schleife erzeugen/ändern ?

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

  • #16
    So wie du den Code jetzt hast wundert micht das nicht. $t ist ein String und kein Array. Ausserdem ist's ein Leerstring, somit kannst du nicht auf die einzelnen Zeichen des Strings mit $string[pos] zugreifen. Mach das ganze erstmal zum Array
    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


    • #17
      Original geschrieben von Quetschi
      ...
      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 ...
      Mache ich ja jetzt -->$t[$m] nur komme ich mit diese offset Meldunge nicht klar. Obwoh $t[]= ""; gesetzt ist: Haufenweise offset Meldungen ...

      @jahlives
      Ja, habe ich beides probiert:
      $t= "";
      $t[]= "";
      Die offset Meldungen bleiben ...
      Zuletzt geändert von janein; 07.04.2008, 13:49.

      Kommentar


      • #18
        Überleg mal was dieser Code macht
        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;
                        } 
        Also erster Durchlauf: $m ist 0 und $monat[1] irgendein String. In dein äusseres if kommst du nur rein wenn $monat[1] ein Leerstring ist, was im ersten Durchlauf wohl nicht der Fall ist. Also geht's in den else-Zweig deines Codes und damit wird das Array nicht geändert. Jetzt beim nächsten Durchlauf ist $m 1 und das Array hat kein Element 1 --> Fehlermeldung seitens PHP. Schreib mal direkt nach dem äusseren if die('Komme rein'). Ich wette eine Flasche Bier, dass diese Ausgabe nie erscheinen wird.
        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


        • #19
          Original geschrieben von janein
          Mache ich ja jetzt -->$t[$m] nur komme ich mit diese offset Meldunge nicht klar. Obwoh $t[]= ""; gesetzt ist: Haufenweise offset Meldungen ...
          Ich hab noch nicht ganz verstanden, was du da für eine Datenstruktur hast/brauchst. Glaub dass du da aber mit den variablen Variablennamen vielleicht generell einen unpassenden Ansatz gewählt hast.

          Was soll da am Ende dabei rauskommen? So ganz hab ich da dein Post dazu weiter oben ned verstanden.
          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


          • #20
            So, ich habs jetzt :-)
            PHP-Code:
                for($m =0;$m 12;$m++)
                    {
                        if ( 
            $monat[1] == $m)
                        {

                            if (!isset(
            $t[$m]))
                            {
            $monat = array("Janurar","Februar","März","Aprill","Mai","Juni",
            "Juli","August","September","Oktober","November","Dezember");
                            
            fprintf($fp$format$monat[$m]);

                            
            $t[$m] = true;
                            }
                            
            fputs($fp"<a href='$value[0]'>$value[1]</a> <b>$value[4]</b> [$value[3]$value[2]<br>\n");
                        }
                    }
                } 
            Gibt's noch etwas zu verbessern?

            Kommentar


            • #21
              Original geschrieben von janein
              Gibt's noch etwas zu verbessern?
              Nimm die Definition der Monate aus der Schleife raus, die müssen ja nicht in jedem Durchgang neu gesetzt weden. Und ob der Janu so rar ist, oder der Apri[COLOR=red]ll[/COLOR] wirklich so sein will, musst du selber entscheiden.
              Gruss
              H2O

              Kommentar


              • #22
                Nimm die Definition der Monate aus der Schleife raus, die müssen ja nicht in jedem Durchgang neu gesetzt weden.
                V.a. wenn man keine Fehlermeldungen bezüglich undefinierter Var haben will
                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


                • #23
                  Original geschrieben von H2O
                  Nimm die Definition der Monate aus der Schleife raus, die müssen ja nicht in jedem Durchgang neu gesetzt weden. Und ob der Janu so rar ist, oder der Apri[COLOR=red]ll[/COLOR] wirklich so sein will, musst du selber entscheiden.
                  :-)

                  Original geschrieben von jahlives
                  V.a. wenn man keine Fehlermeldungen bezüglich undefinierter Var haben will
                  :-)

                  So?
                  also mit einer neuen Zuweisung
                  PHP-Code:
                  $monate = array("Janurar","Februar","März","Aprill","Mai","Juni",
                  "Juli","August","September","Oktober","November","Dezember");

                      for(
                  $m =0;$m 12;$m++)
                          {
                              if ( 
                  $monat[1] == $m)
                              {

                                  if (!isset(
                  $t[$m]))
                                  {
                  $monat $monate;

                                  
                  fprintf($fp$format$monat[$m]);

                                  
                  $t[$m] = true;
                                  }
                                  
                  fputs($fp"<a href='$value[0]'>$value[1]</a> 
                                   <b>
                  $value[4]</b> [$value[3]$value[2]<br>\n");
                              }
                          }
                      } 
                  Zuletzt geändert von janein; 07.04.2008, 18:29.

                  Kommentar


                  • #24
                    Ist $monat = $monate; nur übersichtlicher und wird dennoch jedesmal neu zugewiesen oder ist es auch schneller, weil nichts mehr zugewiesen sondern nur eine Kopie erstellt wird? Ist doch richtig mit der Kopie und $monat = $monate; oder?

                    Und vielen Dank für Eure guten Ratschläge!

                    Kommentar


                    • #25
                      Original geschrieben von janein
                      Ist $monat = $monate; nur übersichtlicher und wird dennoch jedesmal neu zugewiesen oder ist es auch schneller, weil nichts mehr zugewiesen sondern nur eine Kopie erstellt wird? Ist doch richtig mit der Kopie und $monat = $monate; oder?
                      Völlig überflüssig. Das Array $monate steht doch auch in der Schleife zur Verfügung. Was willst du da denn noch einer anderen Variablen zuweisen?
                      Gruss
                      H2O

                      Kommentar

                      Lädt...
                      X