Array darf nicht gelöscht werden - Teil II

tklustig

Erfahrenes Mitglied
Hallo Leute, wie bewerkstellige ich es, dass ein über eine Session implementiertes Array nicht bei jedem neuen Merhodenaufruf gelöscht bzw. geleert wird?
Mit array_push klappt es nicht, da dazu irgendwo eine Initialisierung der Form $var=array(); stattfinden muss, und das löscht das Array bei erneutem Aufruf der Methode. Folgender
Lösungsvorschlag führt wider Erwarten ebenfalls nicht zum Ziel. Das Array wird überschrieben, es ist immer nur ein einzelner Wert abrufbar. count() ist also immer eins. Wie geht es richtig? Geht es überhaupt? Vielleicht mit einer Referenz?
PHP:
       if (!isset($sessionPHP['Attachement']) || !is_array($sessionPHP['Attachement'])) {
                        $sessionPHP['Attachement'] = [];
                    }
                    $sessionPHP['Attachement'][] = $id;
                    if ($id > 5) {
                        var_dump($sessionPHP['Attachement']);
                        die();
                    }
Der vardump zeigt
Code:
array(1) { [0]=> int(10) }
auf, obwohl die Elemente 1,5 und 10 drinn sein müssten
 
Hi,

also die globale Sessionvariable heisst "$_SESSION", nicht "$sessionPHP". Versuchs mal damit.

Grüsse,
BK
 
Klappt immer noch nicht, zumindest nicht mit folgendem Code
PHP:
              /* if (!isset($_SESSION['Attachement']) || !is_array($_SESSION['Attachement'])) {
                      $_SESSION['Attachement'] = $id;
                      } */
                    $ArrayofAttachements[] = $id;
                    $_SESSION['Attachement'] = $ArrayofAttachements;
                    if ($id > 5) {
                        $name = $_SESSION['Attachement'];
                        print_r("Session<br>");
                        var_dump($name);
                        print_r("<br>Array<br>");
                        var_dump($ArrayofAttachements);
                        die();
                    }
var_dump zeigt folgendes:
Code:
Session
array(1) { [0]=> int(5) }
Array
array(1) { [0]=> int(5) }
Der Wert für das Array ist okay, die Session aber sollte bereits drei Elemente enthalten, da die Methode bereits dreimal aufgerufen wurde!
 
Heureka! So klappt es:
PHP:
                if (!isset($_SESSION['Attachement']) || !is_array($_SESSION['Attachement'])) {
                        $_SESSION['Attachement'] = array();
                    }
                    $ArrayofAttachements[] = $id;
                    $_SESSION['Attachement'][] = $id;
                    if ($id > 5) {
                        $name = $_SESSION['Attachement'];
                        print_r("Session<br>");
                        var_dump($name);
                        print_r("<br>Array<br>");
                        var_dump($ArrayofAttachements);
                        die();
                    }
erzeugt folgende Ausgabe:
Code:
Session
array(4) { [0]=> int(10) [1]=> array(1) { [0]=> int(1) } [2]=> array(1) { [0]=> int(5) } [3]=> array(1) { [0]=> int(10) } }
Array
array(1) { [0]=> int(10) }
Es wäre mir allerdings lieber,ein Array mit allen Werten als ineinander verschachtelte Arrays zu erhalten. Weiß jemand, wie ich das erreichen könnte?
Wenn nicht, geht's hier https://www.tutorials.de/threads/verschachtelte-arrays-loeschen.406655/#post-2104684
weiter...
 
Zuletzt bearbeitet:
naja,
HTML:
$_SESSION['Attachement'][] = $id

Dieser Code sollte eigentlich einen Wert als neues Element zu dem Array hinzufügen. Für mich klingt das so, als ob $id auch ein Array ist.
 
Yuup. Sorry ,hatte vergessen, meine Threads zu aktualisieren. Hier der Code, der mein Problem löst:
PHP:
               if (!isset($_SESSION['Attachement']) || !is_array($_SESSION['Attachement'])) {
                        $_SESSION['Attachement'] = array();
                    }
                    $_SESSION['Attachement'][] = $id;
 
Zurück