dynamische Arrays

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

  • dynamische Arrays

    Ich binde ein File ein, indem Arrays in fortlaufendem Schema nach $KeyGruppe1, $KeyGruppe2, $KeyGruppe3, usw. benannt sind.

    Die Aufgabenstellung liegt darin, herauszufinden wie viele dieser fortlaufenden Arrays definiert wurden. Mein Problem hierbei liegt an der Sache, dass der Integerwert nach 'KeyGruppe' von einer Schleife generiert werden muss. Weder funktioniert:
    $array=$keygruppe.$i;
    noch
    isset($keygruppe.$i); ...

    Ich habe den endgültigen Namen nicht sondern setze ihn aus einem festen Wert ('KeyGruppe') und einem Integer ('1', '2', '3', usw.) zusammen. Und egal auf welche Weise ich das versuche, kommen Fehler.

    Hoffe, es ist einigermaßen verständlich beschrieben

  • #2
    Deshalb machs doch so, wie ich es Dir bereits gezeigt habe *g*

    Das was Du brachst sind "variable Variablen" und das funzt so:
    PHP-Code:
    <?php
    $r3 
    "Ich bin die r3 Variable";
    $var "r";
    $var .= "3";
    print 
    "${$var} ist ident mit $r3";
    ?>
    Damit es nicht zu verwirrend wird, hab ich Dir ja für Dein Beispiel ein Skripterl bereits zusammengebastelt:
    http://www.php-resource.de/forum/sho...threadid=14477

    Und ob es sich um einen Array oder eine Vraiable handelt ist völlig wurscht - denk ich - ist doch ein Array nix anderes als eine Sonderform einer Variable.

    Kommentar


    • #3
      hm, ich bin dir ja wirklich dankbar, aber ich brauche das ganze mit arrays

      und dann funktioniert das nicht mehr...

      Kommentar


      • #4
        Mit Arrays? Bitte sehr:
        PHP-Code:
        <?
        $Keyword1[] = "Element1 in $Keyword1"; // Zum Test wird diese Variable definiert
        $Keyword1[] = "Element2 in $Keyword1"; // Zum Test wird diese Variable definiert
        $Keyword2[] = "hallo2"; // diese auch
        $Keyword3[] = "";       // diese auch aber nur ohne Inhalt   

        $anz = 10; // Anzahl Variablen

        $varname = "Keyword"; // Die Variablen sollen alle $Keyword1 .. $Keywordn heißen

        for ($i=1; $i<$anz; $i++) {
           $var =  $varname . $i;  // hier wird der Vraiablenname zusammengebastelt
                                   // $Keyword1, $Keyword2, $Keyword3 bis $Keywordn

           print "Ich prüfe jetzt die Variable $$var\n"; // hier sieht man es 
           if (isset(${$var}) && ${$var} !="") { // und da wird gechecked, ob die Variable passt
              print "BINGO $$var ist vorhanden und ist gesetzt.<br>";
              print "Anzahl Elemente im Array: $$var: ".count(${$var});
           } else {
              print "$$var gibt es nicht oder ist leer<br>";
           }
           print "<hr>";
        }
        ?>
        Probier das Skript mal aus. Sogar die Anzahl der Elemente zeigt es jetzt an.

        Kommentar


        • #5
          hm, original funktioniert es. ich muss aber die arrays anders definieren und dann wird immer 0 ausgegeben:

          PHP-Code:
          $KeyGruppe1[name]="Computer";
          $KeyGruppe1[Keyword1] = "Hardware";
          $KeyGruppe2[name]="Freizeit";
          $KeyGruppe2[Keyword1] = "Kino";
          $anz_arrays=0;
          $break=FALSE;
          $varname "KeyGruppe";
          for (
          $i=1$break=FALSE$i++) {
             
          $var =  $varname $i;
             if (isset(${
          $var}) && ${$var} !="") {
                
          $break++;
                
          $elements[$i]=count(${$var});
             } else {
                
          $break=TRUE;
             }
          }
          print 
          $anz_arrays

          Kommentar


          • #6

            Kommentar


            • #7
              hm, 'n bier zuviel?

              es wird immer 0 ausgegeben, auch wenn arrays definiert sind, somit = *nichtfunktionierend*

              Kommentar


              • #8
                na, dann gute nacht *push*

                Kommentar


                • #9
                  Ach so ich dachte Du hast es geschafft.
                  PHP-Code:
                  for ($i=1$break==FALSE$i++) { // == anstatt = 
                  oder so
                  PHP-Code:
                  $KeyGruppe1[name]="Computer";
                  $KeyGruppe1[Keyword1] = "Hardware";
                  $KeyGruppe2[name]="Freizeit";
                  $KeyGruppe2[Keyword1] = "Kino";
                  $anz_arrays=0;
                  $varname "KeyGruppe";
                  for (
                  $i=1;;$i++) {
                     
                  $var =  $varname $i;
                     if (isset(${
                  $var}) && ${$var} !="") {
                        
                  $elements[$i]=count(${$var});
                     } else {
                        break;
                     }
                  }
                  print 
                  $anz_arrays

                  Kommentar


                  • #10
                    verdammt, seit drei tagen beschäftige ich mich jetzt mit 5 zeilen code.

                    klar, vorhin konnte die schleife nicht ausgeführt werden, aber es wird jetzt nach der korrektur immernoch 0 ausgegeben, egal ob ich einfach die zeile editiere oder das ganze script austausche.


                    EDIT:
                    nein, ich idiot *hammerschwing*
                    wo wird denn $anz_arrays hochgezählt? *g*

                    ES FUNKTIONIERT!!!
                    Zuletzt geändert von panta; 30.12.2002, 02:25.

                    Kommentar


                    • #11
                      Wenn das keine Schwergeburt war?

                      Kommentar


                      • #12
                        *g*
                        vielen dank für den kaiserschnitt

                        Kommentar

                        Lädt...
                        X