Dieter M.: Mehrdimensionales Array in einer Session

Hallo,

ich schaffe es einfach nicht, dass ich ein 2-Dimensionale Array in einer Session speichere.

Normalerweiße müsste es ja so aussehen:
1.Dimension:

$array1d = array();
//Zugriff:
array1d[0] = "Hallo";
array1d[1] = "Welt";
...

2.Dimensionen:

$array2d = array(array());
//Zugriff:
array2d[0][0] = "Hallo";
array2d[0][1] = "Welt";
array2d[1][0] = ...
...

So nun meine Frage: Wie funktioniert das in Sessions. Ich habe bereits einige Beiträge gelesen, aber ich komme einfach nicht dahinter. Ziel ist eine Session, die so aussieht:
$_SESSION['einkaufsliste'][][]

§_SESSION['einkaufsliste'] soll "Bezeichnung" und "Menge" beinhalten

lg Dieter M.

  1. Hi!

    ich schaffe es einfach nicht, dass ich ein 2-Dimensionale Array in einer Session speichere.

    Hör auf in Dimensionen zu denken, wenn du mit PHP arbeitest. PHP-Arrays sind Baumstrukturen. Manchmal erinnern sie zwar im Aussehen an x-dimensionale Gebilde, besonders wenn sie schön regelmäßig geschachtelt sind. aber das ist sofort mit einem Element-Hinzufügen oder -Löschen änderbar.

    2.Dimensionen:
    $array2d = array(array());

    Das erzeugt mitnichten eine zweite Dimension. Du bekommst ein Array mit einem einzigen Element (mit dem Schlüssel 0), das ein leeres Array ist.

    array2d[0][0] = "Hallo";
    array2d[0][1] = "Welt";
    array2d[1][0] = ...

    Du hättest genausogut $array2d = array(); initialisieren können. Es ist noch nicht einmal notwendig, $array2d zu initialisieren (obwohl es vermutlich sinnvoll ist). Nach deinem array(array()) existiert nämlich nur diese Struktur:

    array(1) {
      [0]=>
      array(0) {
      }
    }

    Deine 1er Schlüssel erweitern das Array. Dimensionen heißt für mich, dass sich etwas gleichmäßig in diese Richtungen ausbreitet.

    array(2) {
      [0]=>
      array(2) {
        [0]=>
        string(5) "Hallo"
        [1]=>
        string(4) "Welt"
      }
      [1]=>
      array(1) {
        [0]=>
        string(3) "..."
      }
    }

    Daran solltest du erkennen, dass du geschachtelte Arrays hast, die noch dazu ungleich groß sind. Auch könntest du problemlos das Hallo-Welt-Array gegen einen String oder sonstwas austauschen.

    array(2) {
      [0]=>
      string(10) "Hallo Welt"
      [1]=>
      array(1) {
        [0]=>
        string(3) "..."
      }
    }

    Damit ist dein Dimensionsbegriff endgültig hinfällig.

    So nun meine Frage: Wie funktioniert das in Sessions.

    Genau so. Nur der Name der Variablen festgelegt auf $_SESSION. Diese Variable unterscheidet sich in keiner Weise von einem normalen Array, was die Zugriffe angeht.

    Lo!

    1. Hör auf in Dimensionen zu denken, wenn du mit PHP arbeitest.

      Schade, da kann ich gar nicht mehr behaupten in neun Dimensionen denken zu können.

      1. Hello,

        Hör auf in Dimensionen zu denken, wenn du mit PHP arbeitest.

        Schade, da kann ich gar nicht mehr behaupten in neun Dimensionen denken zu können.

        Dann denke doch stattdessen in der Verästelungsstufe Neun. Wenn Du jetzt noch einen marketingfähigen Begriff dafür erfindest (vermutlich denglisch), dann bist Du der Array-King.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de