dedlfix: Mehrdimensionales Array in einer Session

Beitrag lesen

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!