dynamische Arrays

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.

    Comment


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

      und dann funktioniert das nicht mehr...

      Comment


      • #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.

        Comment


        • #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

          Comment


          • #6

            Comment


            • #7
              hm, 'n bier zuviel?

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

              Comment


              • #8
                na, dann gute nacht *push*

                Comment


                • #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

                  Comment


                  • #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!!!
                    Last edited by panta; 30-12-2002, 02:25.

                    Comment


                    • #11
                      Wenn das keine Schwergeburt war?

                      Comment


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

                        Comment

                        Working...
                        X