2016-11-23 64 views
0

我建立一個購物車,並想將它們添加到會話到新的項目添加到一個心願,但他們不應該替換現有項目添加項目到一個PHP數組,而無需更換以前的項目

這是我已經嘗試,但返回的

[] operator not supported for strings 

此錯誤是代碼:

public function addItem($value, (int)$id){ 
    if(isset($_SESSION[$value])){ 

     $_SESSION[$value][] = array(); 
     array_push($_SESSION[$value],array(
      'id'=>$id 
     )); 
     return true; 
    } 
} 

$值的數值是一個字符串

我也跟着上This yii link還取決於This link但仍然我得到了同樣的錯誤

通過做這種方式

public function addItem($value, $id){ 
    if(isset($_SESSION[$value])){ 

     $_SESSION[$value] = array(); 
     array_push($_SESSION[$value],array(
      'id'=>$id 
     )); 
     return true; 
    } 
} 

添加的項目,但替換掉以前我曾

什麼我需要更改它的工作方式

+0

什麼是$值?你的股票?因爲我會建議你只使用'$ _SESSION ['items'] [] = Array($ id,$ value);' – KikiTheOne

+1

_「添加項目,但替換我之前所做的任何事情」 - - 當然,如果你每次將一個新的空數組賦給$ _SESSION [$ value]。 // $ _SESSION已經是一個數組了,你不需要在PHP中初始化「子數組」,它會自動創建它們。所以你可以簡單地使用'$ _SESSION [$ value] [] ='new item';'將新項目推入數組中,不需要使用$ _SESSION [$ value] = array()進行初始化。 – CBroe

回答

1

嘗試在字符串上使用短陣列推送語法時出現此錯誤。 demo here.

$_SESSION[$value]是一個字符串。所以你不能使用像$_SESSION[$value][]= 's'

所以當你第一次使用$_SESSION[$value]時,把它做成一個數組。不是一個字符串。那麼你可以用作$_SESSION[$value][]= 's';