Christof: Sessions:Mehrdimensionales Array

Ich habe folgendes Problem:
Ich möchte Gerne in einer Session ein Mehrdimensionales Array aufbauen. So hab ich mir das überlegt:

session_start();
$HTTP_SESSION_VARS["artikel"][]=$HTTP_GET_VARS["artikel"];

$i=count ($HTTP_SESSION_VARS["artikel"]);

for ($k=1; $k<=$i; $k++)  {
   print $HTTP_SESSION_VARS["artikel"][$k]."<br>";
}

So sollte das eigentlich klappen, aber es kommt folgende Fehlermeldung:

Undefined offset:1 on line 7
Undefined offset:2 on line 7

Er zeigt also nicht die Artikel an die in dem Merdeminsionalen Array liegen.
Warum ist das so?
Danke CHRISTOF
PS: Das $i= Count()... in L. 4

  1. Ich möchte Gerne in einer Session ein Mehrdimensionales Array aufbauen. So hab ich mir das überlegt:

    session_start();
    $HTTP_SESSION_VARS["artikel"][]=$HTTP_GET_VARS["artikel"];

    $i=count ($HTTP_SESSION_VARS["artikel"]);

    for ($k=1; $k<=$i; $k++)  {
       print $HTTP_SESSION_VARS["artikel"][$k]."<br>";
    }

    So sollte das eigentlich klappen, aber es kommt folgende Fehlermeldung:

    Hast Du mit 'phpinfo(INFO_VARIABLES);' geprüft, wie $HTTP_SESSION_VARS aussieht?

    Gruß,
      soenk.e

    1. Ich möchte Gerne in einer Session ein Mehrdimensionales Array aufbauen. So hab ich mir das überlegt:

      session_start();
      $HTTP_SESSION_VARS["artikel"][]=$HTTP_GET_VARS["artikel"];

      $i=count ($HTTP_SESSION_VARS["artikel"]);

      for ($k=1; $k<=$i; $k++)  {
         print $HTTP_SESSION_VARS["artikel"][$k]."<br>";
      }

      So sollte das eigentlich klappen, aber es kommt folgende Fehlermeldung:

      Hast Du mit 'phpinfo(INFO_VARIABLES);' geprüft, wie $HTTP_SESSION_VARS aussieht?

      Hab's gerade probiert, aber es waren keine Angaben über die HTTP_SESSION_VARS darin. Ich weiß aber, daß es ein assoziatives Array ist!

      Gruß,
        soenk.e

      1. Hi Christof!

        Hab's gerade probiert, aber es waren keine Angaben über die HTTP_SESSION_VARS darin. Ich weiß aber, daß es ein assoziatives Array ist!

        Genau da ist das Problem. Du versuchst ja das Array über einen numerischen Index anzusprechen. Das macht das nicht mit. Du musst dafür Namen vergeben. Die kann er dann anzeigen.

        Schönen Gruß aus Trier!

        Peter

        1. Hab's gerade probiert, aber es waren keine Angaben über die HTTP_SESSION_VARS darin. Ich weiß aber, daß es ein assoziatives Array ist!

          Genau da ist das Problem. Du versuchst ja das Array über einen numerischen Index anzusprechen. Das macht das nicht mit. Du musst dafür Namen vergeben. Die kann er dann anzeigen.

          Will ich zwar nicht abstreiten, aber ich kann's mir nicht vorstellen. In PHP kann man normale und assoziative Felder durchaus problemlos mischen. PHP gibt in der Funktion each() beispielsweise allerhöchstselbst ein solches gemischtes Feld zurück.
          Spricht man darüberhinaus ein Feld mit einem Index an, welcher nicht existiert, kommt "null" oder "undefined" zurück, aber kein Fehler.

          Ich denke mal, daß Problem liegt irgendwo anders, denn wie er ja geschrieben hat, existiert die Variable HTTP_SESSION_VARS anscheinend überhaupt nicht.

          Christof, könntest Du mal genau erklären, in welcher Zeile der Fehler auftritt (wo ist in deinem Codeschnipsel Zeile 7) und was Du mit "PS: Das $i= Count()... in L. 4" meinst? "Das Bla in L7" ist jedenfalls kein vollständiger Satz :)

          Gruß,
            soenk.e

          1. Hab's gerade probiert, aber es waren keine Angaben über die HTTP_SESSION_VARS darin. Ich weiß aber, daß es ein assoziatives Array ist!

            Genau da ist das Problem. Du versuchst ja das Array über einen numerischen Index anzusprechen. Das macht das nicht mit. Du musst dafür Namen vergeben. Die kann er dann anzeigen.

            Will ich zwar nicht abstreiten, aber ich kann's mir nicht vorstellen. In PHP kann man normale und assoziative Felder durchaus problemlos mischen. PHP gibt in der Funktion each() beispielsweise allerhöchstselbst ein solches gemischtes Feld zurück.
            Spricht man darüberhinaus ein Feld mit einem Index an, welcher nicht existiert, kommt "null" oder "undefined" zurück, aber kein Fehler.

            Habe das gerade mal mit $_POST ausprobiert (ist auch ein assoziatives Array). Möchte ich es mit $_POST[$i] ansprechen, bekomme ich die gleiche Meldung:
            Undefined offset:0 on line 5
            Undefined offset:1 on line 5
            Undefined offset:2 on line 5
            .
            .
            .

            Spreche ich die Felder jedoch über die Namen an $_POST["name"] klappt das einwandfrei.
            Allerdings sollte es auch mit foreach funktionieren....

            Muss jetzt leider weg, probiere es aber nacher aus.

            Peter!

            1. Hab's gerade probiert, aber es waren keine Angaben über die HTTP_SESSION_VARS darin. Ich weiß aber, daß es ein assoziatives Array ist!

              Genau da ist das Problem. Du versuchst ja das Array über einen numerischen Index anzusprechen. Das macht das nicht mit. Du musst dafür Namen vergeben. Die kann er dann anzeigen.

              Will ich zwar nicht abstreiten, aber ich kann's mir nicht vorstellen. In PHP kann man normale und assoziative Felder durchaus problemlos mischen. PHP gibt in der Funktion each() beispielsweise allerhöchstselbst ein solches gemischtes Feld zurück.
              Spricht man darüberhinaus ein Feld mit einem Index an, welcher nicht existiert, kommt "null" oder "undefined" zurück, aber kein Fehler.

              Habe das gerade mal mit $_POST ausprobiert (ist auch ein assoziatives Array). Möchte ich es mit $_POST[$i] ansprechen, bekomme ich die gleiche Meldung:
              Undefined offset:0 on line 5

              Kann ich hier mit PHP 4.0.6 nicht nachvollziehen.

              $i=0;
                echo $HTTP_SERVER_VARS[$i];

              funktioniert fehlerlos und gibt, wie erwartet, nichts aus. Das wäre dann heute der zweite Fall, wo es einen merkwürdigen Unterschied zwischen PHP 4.0 und 4.1 gibt (siehe http://forum.de.selfhtml.org/?m=74955&t=13438).

              Ändert aber natürlich nichts daran, daß es mit foreach oder each() funktionieren wird.

              Gruß,
                soenk.e

              1. Nochmal Hallo!

                Kann ich hier mit PHP 4.0.6 nicht nachvollziehen.

                $i=0;
                  echo $HTTP_SERVER_VARS[$i];

                funktioniert fehlerlos und gibt, wie erwartet, nichts aus. Das wäre dann heute der zweite Fall, wo es einen merkwürdigen Unterschied zwischen PHP 4.0 und 4.1 gibt (siehe http://forum.de.selfhtml.org/?m=74955&t=13438).

                Holla, Du hast Recht. Ich habe auf einem anderen Rechner noch die 4.06, und da funktioniert es tatsächlich...
                Meine Tests von oben beruhen auf 4.1.2.

                Ändert aber natürlich nichts daran, daß es mit foreach oder each() funktionieren wird.

                Ja, das funktioniert (auch auf 4.2.1).

                Shönen Gruß aus Trier,

                Peter

  2. Hi!

    Ich habe folgendes Problem:
    Ich möchte Gerne in einer Session ein Mehrdimensionales Array aufbauen.

    Bist Du Dir sicher das das geht? Ich zitiere aus dem PHP-Manual:
    session_register() akzeptiert eine variable Anzahl von Argumenten, die jeweils entweder eine Zeichenkette sein können, die den Namen einer Variablen trägt, oder ein Array, das aus solchen Variablennamen oder anderen Arrays besteht. Für jeden Namen registriert session_register() die globale Variable mit diesem Namen in der aktuellen Session.
    http://www.php.net/manual/de/function.session-register.php

    ich denke das ist das entscheidende, was man überhaupt in der Session speichern kann, wie auch immer man das macht. Und da steht halt im übertragenden Sinne, das $HTTP_SESSION_VARS oder auch $_SESSION ein Array entweder mit Variablen oder mit eigenständigen Arrays ist. Ihr wißt das ich kein Array-Experte bin, aber ich denke das ist was anders ist als ein mehrdimensionaler Array, oder? Was auf alle Fälle funktionieren sollte, wenn Du einfach mehrere Arrays in dem $_Session Array speicherst.

    Viele Grüße
    Andreas