array_push will nich wie ich das möchte

xtramen01

Erfahrenes Mitglied
Hallo Leute,

eine ganz simple Angelegenheit eigentlich.

PHP:
  $_SESSION['last_visit'] = array();

  //if(isset($_GET['products_id']) && !in_array($_GET['products_id'], $_SESSION['last_visit'])){

  array_push($_SESSION['last_visit'], $_GET['products_id']);

 // }

Das Array wird nicht erweitert, warum kann ich mir nicht erklären.
Hat jemand ne Idee?

Gruss
 
Hi!

Ist $_SESSION['last_visit'] wirklich ein Array (überschreibst Du das vielleicht noch irgendwo) - bzw. bekommst Du irgendwelche Warnungen?
http://de.php.net/array_push hat gesagt.:
Hinweis: array_push() gibt eine Warung aus, wenn das erste Argument kein Array ist. Dies unterscheidet sich vom Verhalten von $var[], welches ein neues Array erzeugt.

Gruß
Enum
 
Hi,

kann mir auch grade nicht vorstellen, das array_* bei den Super-Globalen funktioniert. Warum machst du es nicht so:

PHP:
$visits = array();
array_push($visits, $_GET['products_id']);
$_SESSION['last_visits'] = $visits;
 
Hi!

Soweit ich weiß ist $_SESSION dafür ungeeignet, ebenso wie $_REQUEST. Aber mit $_GET['...'], $_POST['...'] und wahrscheinlich auch $_COOKIE['...'] müsste es gehen. Allerdings hat der saftmeister schon recht, eine Superglobale eignet sich wirklich nicht für die Aufgabe.

Gruß
 
Hmm,
so gehts:
PHP:
$_SESSION['last_visits'][] = $_GET['products_id'];
Ich würde aber trotzdem gerne wissen warum es wie o.g. nich geht. :-/

Mein Ziel ist es die letzten 10 Artikel die von einem User besucht/angeschaut wurden in einer Session zu speichern.
Ein anderer Weg fällt mir nicht ein.

Gruss
 
Solange es sich nur um ein Element handelt sollte man sowieso nicht array_push sondern $var[] verwenden.

Mal davon abgesehen, im schnelltest bei mir gabs keine Probleme.

PHP:
<?php 

session_start();

$test = Array(1,2,3,4,5,6,7);

$_SESSION['last_visit'] = array();

array_push($_SESSION['last_visit'],$test);

print_r($_SESSION['last_visit']);
=>
Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 ) )
 
Also ich habs nun rausgefunden.

Ich hab vergessen die Paramter welche ich über $_GET erhalte und das array pushen möchte, ebenfalls als array zu deklarieren.
Danke euch für die Mühe.

PHP:
$visits = array();
$params = array();
$params[] = $_GET['products_id'];
array_push($visits, $params);
$_SESSION['last_visits'] = $visits;
 
Also ich habs nun rausgefunden.

Ich hab vergessen die Paramter welche ich über $_GET erhalte und das array pushen möchte, ebenfalls als array zu deklarieren.

Hm, also eigentlich sollte Da nicht das Problem liegen. Das ist eher ein Bug in der von Dir verwendeten Version von PHP.
Aber wie schon in Doku von array_push erwähnt ist der []-Operator sowieso vorzuziehen....
 
Zurück