Fehlerhafte Zuordnung einer Variablen zu einem Array

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

  • Fehlerhafte Zuordnung einer Variablen zu einem Array

    Hallo,

    ich versuche mich gerade an einem Kalender. Hab mir dazu eine kleine Funktion geschrieben die einen 2dimensionalen Array mit den Kalenderzahlen füllt.
    Das Problem ist aber das die Funktion für das Füllen ab der 2. Zeile eine kleine Fehlfunktion hat. Sobald die Variable $tagzahl (steht für den entsprechenden Tag im Monat) 10 erreicht, wird im Array immer nur eine 1 gespeichert.
    Ab der nächsten Zeile funktionert alles ohne Probleme!

    Hier mal die Funktion:
    //nächsten reihen auffüllen
    for($x = 1; $x < 6; $x++) {
    for($y = 0; $y < 7; $y++) {
    if ($tagzahl <= $monatsende) $monat[$x][$y] = $tagzahl; else $monat[$x][$y] = "0";
    $tagzahl++;
    }
    }

    Danke schon mal für eure Hilfe!!

  • #2
    sowie das Script ist, funz es tadellos, wie prüfst du denn? mach mal
    PHP-Code:
    echo '<pre>';
    print_r($monat);
    echo 
    '</pre>'
    was bekommst du?

    Kommentar


    • #3
      Hi,

      schonmal Danke für die Antwort.
      Hier siehst du sie Ausgabe:

      http://www.tripper.rheinland-it.com/

      Ich hab mir schon alle Variablen ausgeben lassen, die $tagzahl weisst auch immer den richtigen Wert auf, allerdings wird immer nur eine 1 im array gespeichert. aber auch nur in der 1. zeile!

      greetz

      Kommentar


      • #4
        Hm... ich vermute, dass du im Script irgendwo das Array überschrieben hast . Mach mal in einer separaten Datei zum Test:
        PHP-Code:
        for($x 1$x 6$x++) {
            for(
        $y 0$y 7$y++) {
                if (
        $tagzahl <= date('t')) $monat[$x][$y] = $tagzahl
                else 
        $monat[$x][$y] = "0";
                
        $tagzahl++;
            }
        }
        echo 
        '<pre>';
        print_r($monat);
        echo 
        '</pre>'
        und? wie sieht's aus?

        Kommentar


        • #5
          Code:
          [0] => 1234567
          [1] => 8911111
          [2] => Array
              (
                  [0] => 15
                  [1] => 16
                  [2] => 17
                  [3] => 18
                  [4] => 19
                  [5] => 20
                  [6] => 21
              )
          das sieht doch stark danach aus, als ob $monat[0] und $monat[1] als strings behandelt werden, so dass per $monat[0][i] lediglich auf die einzelnen zeichen dieses strings zugegriffen wird.

          hast du denn die arrays vorher auch ordentlich initialisiert? davon ist in deinem code leider nichts zu erkennen ...
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            geht immer noch nicht!

            hab jetzt mal nen Test gemacht und festgestellt, dass ich keine 2 stelligen zahlen in der 2. zeile (also monat[1]..) array speichern kann!
            Weis einer woran das liegt!?!?!

            Kommentar


            • #7
              Hier mal die relevanten Stellen im Script:

              PHP-Code:
              $monat = array(intint);

              $tagzahl 1;
              $monatsende 31;
                          
              //array mit 0 auffüllen
              for($x 0$x 6$x++) {
              for(
              $y 0$y 7$y++) {
              $monat[$x][$y] = 0;
              } }
                  
              //erste reihe im array füllen
              for($x = ($starttag); $x 7$x++) {
              $monat[0][$x] = $tagzahl;
              $tagzahl++;
              }
                      
              //nächsten reihen auffüllen
              for($x 1$x 6$x++) {
              for(
              $y 0$y 7$y++) {
              if (
              $tagzahl <= $monatsende$monat[$x][$y] = $tagzahl; else $monat[$x][$y] = "0";
              $tagzahl++;
              }
              }
                      
              echo 
              '<pre>';
              print_r($monat);
              echo 
              '</pre>';
                      
                      
                      
              $monat[9][9] = $monat_g;
              $monat[9][10] = $jahr_g;
              //Array übergeben
              return $monat;
              //Function Ende

              Zuletzt geändert von Majestic; 27.09.2004, 12:17.

              Kommentar


              • #8
                PHP-Code:
                $monat = array(intint); 
                soll das ausreichen, um PHP klarzumachen, dass es sich um ein zweidimansionales array handeln soll?

                initialisiere doch die zweite ebene auch noch mal richtig, in dem du das zwischen den zwei schleifen für die jeweils erste ebene machst:
                PHP-Code:
                //array mit 0 auffüllen
                for($x 0$x 6$x++) {
                  
                $monat[$x] = array(); // array auf zweiter ebene initialisieren
                  
                for($y 0$y 7$y++) {
                    
                $monat[$x][$y] = 0;
                  }


                und die trennung zwischen "erste reihe füllen" und "restliche reihen füllen" ist m.E. unnötig, das sollte sich auch gleich in einem erledigen lassen.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  geht!
                  danke!!!!

                  Kommentar


                  • #10
                    dachte ich's mir doch - die arrays waren vorher nicht ordentlich initialisiert, und deshalb wurde der index-zugriff auf der zweiten ebene als zugriff auf die einzelnen zeichen eines strings über einen nullbasierten offset interpretiert (auch wenn diese schreibweise veraltet ist).
                    Zuletzt geändert von wahsaga; 27.09.2004, 13:33.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X