2009-10-16 2 views
1

Я создаю корзину для школьного задания. Я довольно много там, за исключением добавления элементов в переменную корзины.Добавление элемента в массив PHP

Я настроил мою телегу сессию: $_SESSION['temp_session'] = array();

, а затем, когда элемент добавляется в корзину, этот код выполняется

if (isset($_POST['addtocart'])) { 
      $item_name = $_POST['item_name']; 
      $price = $_POST['price']; 
      $qty = $_POST['qty']; 

      $newItem = $item_name.":".$price.":".$qty; 
      //echo $newItem; 

      if (isset($_SESSION['shop_session'])) { 
       array_push($shop_session, $newItem); 
       //header('Location: cart.php'); 
       print_r($shop_session); 
      } 
      else { 
       array_push($temp_session, $newItem); 
       //header('Location: login.php?notLoggedIn=true'); 
       print_r($temp_session); 
      } 
     } 

все это, кажется, с, работает нормально (я могу распечатать $newItem, и он содержит элементы), но когда я пытаюсь добавить $newItem в $shop_session или $temp_session, а затем распечатать их, массив будет пустым.

Это связано с тем, как я использую array_push()?

Благодаря

ответ

4

Является ли ваш RegisterGlobals на? Если вы не должны использовать

  if (isset($_SESSION['shop_session'])) { 
        array_push($_SESSION['shop_session'], $newItem); 
        //header('Location: cart.php'); 
        print_r($_SESSION); 
      } 
      else { 
       array_push($_SESSION['temp_session'], $newItem); 
        //header('Location: login.php?notLoggedIn=true'); 
        print_r($_SESSION); 
      } 
+1

@Anax Если вы не «Не знаю, как это относится к« register_globals », тогда вы никогда не сталкивались с скриптом, который был закодирован с ним. – random

+0

А, ладно, спасибо, ребята. с print_r ($ _ SESSION); Я получаю: Array ([temp_session] => Array ([0] => Apocalypso: 10.00: 2)). Итак, $ _SESSION - это массив, и внутри него есть еще один массив, называемый temp_session? как мне скопировать temp_sessions в shop_session? а также, я думаю, что foreach ($ _ SESSION ['shop_session'] как $ item) тоже не будет работать? –

+0

@ e.c.ho Мое первоначальное впечатление заключалось в том, что Алексей подразумевал, что с register_globals On каждая переменная сеанса автоматически также доступна как автономная переменная, что, на мой взгляд, неверно. – Anax

3

Вы не можете набрать

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

и ожидать, чтобы иметь переменную $ temp_session. Все, что у вас есть, это массив ($ _SESSION), который содержит элемент (с ключом temp_session), который также является массивом.

Для того, чтобы иметь желаемые результаты, необходимые дополнительные линии, такие как:

$temp_session = $_SESSION['temp_session']; 

и при обновлении, что снова в сеанс:

$_SESSION['temp_session'] = $temp_session; 
Смежные вопросы