maico: Array in $_SESSION speichern

Hallo ich habe folgendes Problem:

ich möchte einen Array in einer Session speichern. Damit ich den auf einer anderen Seite verwenden kann.

SEITE 1:

if(isset($_GET['add']) && $_GET['add'] != "") {
 $a_testArray[] = $_GET['add'];
}

$_SESSION['array'] = $a_testArray;

SEITE 2:

$a_testArray = array();
if (isset($_SESSION['array'])) {
  $a_testArray = $_SESSION['array'];
}

In der Variable $_SESSION['array'] ist aber nur ein Integer mit dem ersten Wert von $a_testArray und nicht den ganzen Array.

Auf meinem Testsystem Zuhause funktioniertes und auf dem Webspace nicht (beides mal PHP 5).
Kann es am Safe-Mode liegen?

Oder hat Jemand eine andere Idee??

  1. ich möchte einen Array in einer Session speichern. Damit ich den auf einer anderen Seite verwenden kann.

    Sollte problemlos gehen.

    SEITE 1:

    if(isset($_GET['add']) && $_GET['add'] != "") {
    $a_testArray[] = $_GET['add'];
    }

    $_SESSION['array'] = $a_testArray;

    var_dump($_SESSION['array'];

    SEITE 2:

    var_dump($_SESSION['array'];

    $a_testArray = array();
    if (isset($_SESSION['array'])) {
      $a_testArray = $_SESSION['array'];
    }

    Außerdem brauchst du deine Variablen nicht hin- und herzukopieren, das braucht nur überflüssig Speicher. Nutze direkt $_SESSION, $_GET, $_POST etc.

    In der Variable $_SESSION['array'] ist aber nur ein Integer mit dem ersten Wert von $a_testArray und nicht den ganzen Array.

    Dann ist der Integer schon in $_GET falsch drin, würde ich meinen. Du prüfst ja nirgends, ob $_GET['add'] ein Array ist.

    Deshalb mal die Testausgabe mit var_dump einfügen und selbst gucken, was in der Variablen drin steht.

    1. Außerdem brauchst du deine Variablen nicht hin- und herzukopieren, das braucht nur überflüssig Speicher. Nutze direkt $_SESSION, $_GET, $_POST etc.

      »»
      Habe ich umprogrammiert aber das problem besteht immer noch.

      Dann ist der Integer schon in $_GET falsch drin, würde ich meinen. Du prüfst ja nirgends, ob $_GET['add'] ein Array ist.

      Da habe ich dich nicht ganz verstanden, aber $_GET['add'] ist kein Array sondern ein Integer.
      MIt $a_testArray[] = $_GET['add']; füge ich den Integer zum Array hinzu.

      1. Außerdem brauchst du deine Variablen nicht hin- und herzukopieren, das braucht nur überflüssig Speicher. Nutze direkt $_SESSION, $_GET, $_POST etc.
        »»
        Habe ich umprogrammiert aber das problem besteht immer noch.

        Und das var_dump?

      2. Hallo,

        MIt $a_testArray[] = $_GET['add']; füge ich den Integer zum Array hinzu.

        sollte das nicht entweder mit $a_testArray[index]=inhalt oder array_push() geschehen?

        Grüße Sebastian

        1. echo $begrüßung;

          MIt $a_testArray[] = $_GET['add']; füge ich den Integer zum Array hinzu.
          sollte das nicht entweder mit $a_testArray[index]=inhalt oder array_push() geschehen?

          $array[] = ... legt ein neues Element im Array an. Mit array_push($array, ...) geht das auch, aber man  hat damit noch den Overhead eines Funktionsaufrufs. Für ein einzelnes hinzuzufügendes Element ist die erste Methode geringfügig vorteilhafter.

          echo "$verabschiedung $name";

  2. hi,

    if(isset($_GET['add']) && $_GET['add'] != "") {
    $a_testArray[] = $_GET['add'];

    Mache bitte _vor_ diesen Anweisungen ein var_dump($a_testArray).
    Dann können wir erkennen, ob $a_testArray zu diesem Zeitpunkt bereits ein Array _ist_ - entweder bereits mit einigen Elementen, oder als solches initialisiert.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }