variable arrays

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

  • variable arrays

    Hallo zusammen,

    ich habe Probleme mit folgendem Code:

    PHP-Code:
    $walze1=array('1','6','11');
    $walze2=array('2','7','12');
    $walze3=array('3','8','13');
    $walze4=array('4','9','14');
    $walze5=array('5','10','15');

    ....

    $walze='walze'.$akt_walze;
      for (
    $x=0;$x<=2;$x++){
        
    $var="feld".$$walze[$x]; 
    ... 
    Ich habe zuvor einige arrays definiert, mit Namen walze1, walze2, usw.

    Leider ist $$walze[$x] leer, $$walze ergibt aber wie gewünscht die ausgabe array.

    Es war doch irgendwie so, das man beim aufruf des arrays noch geschweifte Klammern einsetzen muss ? Habe ich auch probiert, gibt aber immer parse Fehler...z.B. geht $$walze[{$x}] oder $$walze[{$}x] auch nicht....

    Wie muss ich das aufrufen damit es geht?

    Gruss
    -=Es gibt Leute, die können Ihren Stammbaum bis zu denen zurückverfolgen, die noch darauf saßen=-

  • #2
    Zitat von ZuLtAn Beitrag anzeigen
    Ich habe zuvor einige arrays definiert, mit Namen walze1, walze2, usw.
    Mach daraus ein Array mit mehreren Dimensionen.

    "Variable Variablen" sind fast immer überflüssig, und besser mit Arrays als Datenstruktur umzusetzen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Die Klammern sind an der falschen Stelle.
      PHP: Variable variables - Manual

      $var = "feld" . ${$walze[$x]};
      ergibt bei $x = 0 zum Beispiel
      $var = "feld" . $1;
      und das ist Blödsinn, denn eine Variable namens 1 kann es nicht geben. Variablennamen müssen mit einem Buchstaben oder Unterstrich beginnen.

      Edit: Ich habe den Trick mit $akt_walze übersehen. Das machts ja ganz schlimm!
      Du willst vermutlich das hier:
      $var = "feld" . ${{$walze}[$x]};
      Falls das überhaupt funktioniert - bin mir nicht sicher ob man die Klammern schachteln kann - versteht das kein Mensch.

      Ein Grund auf variable Variablen zu verzichten ist übrigens, dass man sie kaum vernünftig debuggen kann.
      Zuletzt geändert von onemorenerd; 04.07.2009, 13:08.

      Kommentar


      • #4
        OK danke. Aber es interessiert mich schon, wie man auf diese Art denn jetzt auf die arrayindexes zugreifen kann...$$walze gibtr mir ja schon arrayaus,nur auf den arrayinhalt kann ich so $$walze[$x] nicht zugreifen...wie wäre dies denn möglich ?

        Edit: danke
        -=Es gibt Leute, die können Ihren Stammbaum bis zu denen zurückverfolgen, die noch darauf saßen=-

        Kommentar


        • #5
          Zur Erklärung:

          Der Code ist Teil einer Slotmachine. Diese hat 15 Felder, verteilt auf 5 Walzen. Zu jeder Walze gehören 3 Felder, z.B. Walze 1 eben Feld 1,6 und 11.


          ...in den Arrays walze1,walze2 usw.sind Feldnamen gespeichert. Ausserdem habe habe variablen namens $feld1, $feld2 etc. definiert.

          Bei der Ausgabe der Symbole möchte ich feststellen, ob ein Symbol eben auf der aktuellen Walze bereits vorhanden ist, denn jedes Symbol darf auf einer Walze nur einmal vorkommen. Das wollte ich eben durch variable Variablen lösen, da ich weder weiß, auf welcher Walze ich mich befinde,noch welches Symbol vergeben wird, noch auf welchem Feld....
          -=Es gibt Leute, die können Ihren Stammbaum bis zu denen zurückverfolgen, die noch darauf saßen=-

          Kommentar


          • #6
            Zitat von ZuLtAn Beitrag anzeigen
            ...in den Arrays walze1,walze2 usw.sind Feldnamen gespeichert. Ausserdem habe habe variablen namens $feld1, $feld2 etc. definiert.
            Nutze für beides Arrays.

            Bei der Ausgabe der Symbole möchte ich feststellen, ob ein Symbol eben auf der aktuellen Walze bereits vorhanden ist, denn jedes Symbol darf auf einer Walze nur einmal vorkommen. Das wollte ich eben durch variable Variablen lösen, da ich weder weiß, auf welcher Walze ich mich befinde,noch welches Symbol vergeben wird, noch auf welchem Feld....
            Da machen dir variable Variablen die Arbeit kein bisschen leichter, als Arrays.

            Für's Array brauchst du einen Index, und für deine variablen Variablen auch eine Zahl, die du anhängen kannst - wenn du also (angeblich) "gar nichts" weisst, wären letztere auch nicht hilfreicher; dann müsstest du sowieso in einer Schleife alle Möglichkeiten durchlaufen - und auch das ist mit Arrays einfacher und simpler, als mit variablen Variablen.


            Dass variablen Variablen überhaupt existieren, vergiss bitte.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Verzichte auf variable Variablen.

              PHP-Code:
              $walze = array(
                  array(
              1611),
                  array(
              2712),
                  array(
              3813),
                  array(
              4914),
                  array(
              51015)
              ); 
              Warum schreibst du Zahlen eigentlich in Hochkomma?

              Du kannst das Array übrigens auch mit einer Schleife erzeugen:
              PHP-Code:
              $walze = array();
              foreach (
              range(115) as $x) {
                  
              $walze[($x 1) % 5][] = $x;

              Zuletzt geändert von h3ll; 04.07.2009, 15:11.

              Kommentar

              Lädt...
              X