PHP: Mehrdimensionales Array und $_SESSION



  • hallo miteinander

    ich stehe vor dem problem das ich ein mehrdimensonales array in eine session speichern möchte und natürlich gerne auch wieder auslesen und zuweisen. ich schildere mal wie ich das mache:

    //zu begin der seite:
    		$userinfo = array($_SESSION["userinfo"]); //es soll drei dimensional sein, was hier aber glaube ich nicht deklariert werden muss?
    
    	//hier soll das array mit einem weiteren element für alle dimensionen erweitert werden:
    		$userinfo[] = array("name" => $name, "email" => $email, "sex" => $sex);
    
    	//hier soll das dreidimensionale array wieder in die session gespeichert werden mit den aktuellen elementen des array
    		$_SESSION["userinfo"] = $userinfo;
    

    leider funktioniert das irgendwie nicht so ganz. irgendwie werden die werte nur teils in die session geschrieben oder gelesen oder beides. leider kenne ich den syntax von PHP noch nicht so ganz da ich vielmehr als C++ entwickler arbeite. ich hoffe ihr könnt mir sagen wie genau das damit geht, das ein dreidimensionales array in die session gespeichert wird, wieder ausgelesen und elemente in ein dreidimensionales array erweitert werden.



  • Hallo,

    gesetzt den Fall, ich habe dich richtig verstanden, machst du es dir viel komplizierter, als es ist:

    $userinfo = array('name' => $name, 'email' => $email, 'sex' => $sex);
    $_SESSION['userinfo'] = $userinfo;
    
    // ...
    
    $newUserinfo = $_SESSION['userinfo'];
    


  • hallo árn[y]ék und danke für ein reply

    also ich möchte in einer html seite eine tabelle mit dem inhalt von $_SESSION['userinfo'] darstellen lassen. deswegen habe ich zu begin erst einmal ein array deklariert und $_SESSION['userinfo'] übergeben. dannach stelle ich das array in einer html tabelle dar.

    man kann die einträge in der tabelle einzeln löschen lassen. und natürlich neue einträge hinzufügen. deswegen soll beim hinzufügen das array erweitert werden und dann gleich in die session geschrieben werden. beim löschen soll das element aus dem array entfernt werden und dann in die session gespeichert.

    so soll hald eben zum anfang immer das drei dimensionale array mit den werten der session initialisiert werden um stet's den aktuellen inhalt zu haben. aber wiegesagt, es funktioniert leider nicht ganz. ich befürchte einfach das ich die dreidimensionalität falsch anwende. der code sieht aus wie oben bereits geschrieben. nur, was ist falsch daran? die steps sind simpel:

    - drei dimensionales array deklarieren und gleich mit den vorhanden session werten initialisieren.
    - in das drei dimensionales array ein weiteres element eintragen
    - das drei dimensionales array in eine session speichern.



  • Schritt 1:

    $userinfo = array();
    if (isset($_SESSION['userinfo']) && is_array($_SESSION['userinfo'])) {
      $userinfo = $_SESSION['userinfo'];
    }
    

    Schritt 2:

    $userinfo[] = array(
      ...
    );
    

    Schritt 3:

    $_SESSION['userinfo'] = $userinfo;
    

    Anmerkung:
    Sessions in PHP haben kein Problem mit multidimensionalen Arrays, allerdings sieht das bei Objekten anders aus. Du könntest alternativ dein Array noch mit der Funktion serialize() in einen String verwandeln und diesen in der Session speichern was aber vollkommen unnötig und langsam wäre.



  • okay danke 🙂


Log in to reply