David: Unsichtbare Schlüssel-Wert-Paare

Hallöchen,

mein Problem ist IMO recht speziell, ich hatte keine Ahnung, nach was ich hätte suchen sollen. Also:

In einem skript muss ich (wahrscheinlich nur weil ich es nicht besser weiss) öfters auf unterschiedliche Variablen (bzw. Arrays) zugreifen, deren Name anhängig ist von einer übergebenen Variable (genauer: ich übergebe ein Datum und einen Termin, je nach Monat soll in ein dem Monat entsprechendes Array der Termin eingetragen werden). Darum greife ich auf die Schreibweise $$month zurück, wobei $month zuvor der Variablenname für diesen Monat (etwa x02) zugeteilt wurde.

Später im Skript greife ich nun auf das Array - sagen wir mal $x02 - zurück. Dort befinden sich, aus einer include-Datei importiert, bereits vorhandene Termine, und, nach der oben erfolgten Zuweisung, der neue Termin. In die Include-Datei sollten nun alle jetzt in $x02 befindlichen Schlüssel(Datum-)-Wert(Termin-)-Paare eingetragen werden, was ich über eine foreach-Schleife getan habe.

Hier taucht nun das Phänomen auf, dass
 - ich zwar per Angabe eines Schlüssels auf den neuen Termin zugreifen kann
 - ebendieser aber in der Schleife nicht verarbeitet oder in irgendeiner Form (mit var_dump oder print_r) ausgegeben wird.

Wie ist das möglich?

Vielen Dank, David

  1. hi,

    (genauer: ich übergebe ein Datum und einen Termin, je nach Monat soll in ein dem Monat entsprechendes Array der Termin eingetragen werden).

    Warum nutzt du dann nicht einfach ein Array mit einer weiteren Ebene?

    Statt
    $januarArray['xyz'] = 'blah';
    $februarArray['abc'] = 'blubb';

    nimmst du
    $monate['januar']['xyz'] = 'blah';
    $monate['februar']['abc'] = 'blubb';

    Darum greife ich auf die Schreibweise $$month zurück, wobei $month

    zuvor der Variablenname für diesen Monat (etwa x02) zugeteilt wurde.

    Variable Variablen sind m.E. immer nur eine Krücke.

    Wie ist das möglich?

    K.A., ohne den Code zu sehen, verstehe ich nicht genau, was du da treibst.
    Aber überlege dir zunächst mal, ob mein Vorschlag nicht doch sinnvoller sein könnte.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Warum nutzt du dann nicht einfach ein Array mit einer weiteren Ebene?

      Weil ich nicht verstehe, wie das die Sache leichter machen sollte.
      Ich bin aber gerade dabei, es einmal auf die Art zu versuchen, in der Hoffnung, dass sich das Problem dann erledigt.

      Dankeschön für deine Antwort, ich melde mich wieder,
      David

      1. Moin!

        Warum nutzt du dann nicht einfach ein Array mit einer weiteren Ebene?

        Weil ich nicht verstehe, wie das die Sache leichter machen sollte.

        Variable Variablen sind böse, weil du damit eine extrem hohe Komplexität ins Spiel bringst. Wenn du auf $$varname zugreifst, und in $varname steht der gewünschte Variablenname als Tippfehler, legst du eine neue Variable an - oder schlimmer: Du überschreibst eine vorhandene, für etwas ganz anderes gedachte Variable.

        Arrayvariablen sind wesentlich leichter zu handhaben. Ein Überschreiben anderer Variablen ist unmöglich. Und sämtliche Arraywerte werden garantiert mit var_dump() oder print_r() ausgedruckt. Tippfehler fallen so garantiert auf.

        Ich bin aber gerade dabei, es einmal auf die Art zu versuchen, in der Hoffnung, dass sich das Problem dann erledigt.

        Nein, das wird es nicht. Vertraue unserer Erfahrung. Variable Variablen zu benutzen ist absolut blödsinnig - und insbesondere ist es Anfängern absolut nicht zu empfehlen. Die Tatsache, dass auch Profis davon extrem wenig Gebrauch machen, sollte dir zu denken geben.

        - Sven Rautenberg

        --
        My sssignature, my preciousssss!
        1. Hallo,

          Ich bin aber gerade dabei, es einmal auf die Art zu versuchen, in der Hoffnung, dass sich das Problem dann erledigt.

          Nein, das wird es nicht. Vertraue unserer Erfahrung. Variable Variablen zu benutzen ist absolut blödsinnig - und insbesondere ist es Anfängern absolut nicht zu empfehlen. Die Tatsache, dass auch Profis davon extrem wenig Gebrauch machen, sollte dir zu denken geben.

          Ich meinte mit "die" ja auch "deine" - also wahsagas Methode.

          Bis später,
          David

  2. Liebes Forums-Archiv,

    heute hat mir ein sehr spezieller Mensch bei einem Problem geholfen. Falls dieser Text irgendwie mal in seine Hände kommen sollte: Danke dir! Hat mich zwar nochmal einen Nachmittag gekostet, dafür sind jetzt aber alle Klarheiten beseitigt.

    So far, David