2017-03-13 10 views
0

私は思ったより驚くほど解決が難しい問題にヒットしました。そして私が必要とする場所に私を連れて来る答えを見つけていない。 目標はショッピングカートに似たセッション変数のリストに物を追加することです。本質的に、誰かがリストに1つの項目を追加し、次に項目を追加し、それぞれが配列に追加されます。しかし、私はまだ私が必要なものを得ることができない様々な方法を使用した後。ここで 入れ子配列を作成せずに配列に複数の変数を追加するには

  1. ユーザーが
  2. セッション変数を作成したリストに項目を追加するためにクリックしたユーザーの物語である - アイテムのIDをセッション変数に追加され
  3. ユーザーは項目がセッションに追加
  4. 追加項目に追加されます可変セッションが配列になりました
  5. 手順3と4は、ユーザーが必要とする回数だけ繰り返します。
  6. これはすべて、単一のフラットな配列に入れ子にする必要があります。

以下のコードは正しい解決策であるようです。ただし、最新のアイテムIDのみが返され、配列は作成されません。配列を作成する他のソリューションもありますが、必要なものではなく、追加アイテムごとに入れ子配列を作成します。どんな助けもありがとう。

//Request Item From Post 

$ item_number = $ _REQUEST ['pPageItemID']; $ currentItems = $ _SESSION ['ITEM_IDS'];

//セッション{

//Check to see if this is acutally a form post and then set session 
if (isset($_REQUEST['pPageItemID'])){ 

    $newItems = array_merge($currentItems, $itemAdded); 

    //Set new session with old and new IDs 
    $_SESSION['ITEM_IDS'] = $newItems; 
} 

}

//(ISSET($ _ SESSION [ 'ITEM_IDS']))場合に複数のID を追加する配列にそれを変更する既に設定されている場合それはセッションVARを作成し、(IS_NULL($ _ SESSION [ 'ITEM_IDS'])){

//Check to see if this is acutally a form post and then set session 
if (isset($_REQUEST['pPageItemID'])){ 
    $_SESSION['ITEM_IDS'] = $itemAdded; 
} 

}

場合は、製品ID を追加されていない場合、セッションが設定されているか確認してください

答えて

0

私はこれを理解しました。私の問題は、PHPが単一の変数を持つ配列として単一の変数を理解するという前提でした。私は間違っていた!

単純な修正 - 私は、マージ中に配列として定義する必要がありました。コードを下に更新し、美しく動作しています。

$newItems = array_merge((array)$currentItems, (array)$itemAdded); 
関連する問題