4

すべてのセッション データを表示したいが、それをある程度制御したい。問題は、ショッピング カートからのデータであるため、セッションに保存されているものを正確に知ることができないことです。

たとえば、ここに私のセッションの1つの変数があります:

item_name_1 : 商品名
item_quantity_1: 5

各製品には、数値を持ついくつかの変数があります。カートに 2 つの異なる商品がある場合、2 番目の商品は

item_number_2 など。

カートにいくつの異なる製品があるかを示す itemcount という変数もあります。

item_name_ で始まるすべての変数を、たとえば合計価格などの他のすべての変数の後に個々の div に表示する必要があることを php に伝えるにはどうすればよいですか?

これは、セッションデータを印刷するために現在使用しているものです。

<?php
foreach ($_SESSION as $key=>$val)
echo $key. ": ".$val. "<br>";
?>

これは私が見るものです:

currency: EUR
shipping: 10
grandTotal: 70.5
itemCount: 4
item_name_1: Tomato Suppe
item_quantity_1: 1
item_price_1: 3.5
item_options_1: item_name_2
: Lentils Suppe
item_quantity_2: 14
item_price_2: 3.5
item_options_2:
item_name_3: Chicken Suppe
item_quantity_3:
item_quantity_4
item_quantity_4.5_option_item4
グリーンリーフスッペ
item_quantity_4: 1
item_price_4: 3.5
item_options_4:

もちろん読みやすくしたい。

送料に echo $_SESSION['shipping'] を使用して、好きな場所に置くことができますが、製品の住所はどうすればよいですか?

たとえば、すべての製品を div および /div 内に表示したいとしますか?

初心者の質問で申し訳ありません。

ありがとうございました

4

4 に答える 4

2

データがセッションに保存される方法を制御できない場合は、より使いやすい形式で製品データを取得する単純なヘルパー関数を作成できます。

function getSessionProducts()
{
  $itemCount = $_SESSION['itemCount'];
  $products = array(); 
  for($i = 1; $i <= $itemCount; $i++) {
     $products[] = array(
       'name' => $_SESSION['item_name_'.$i],
       'quantity' => $_SESSION['item_quantity_'.$i],
       'price' => $_SESSION['item_price_'.$i],
       'options' => $_SESSION['item_options_'.$i]
    );
  }
  return $products;
}

もちろん、適切な検証を追加して、アクセスする前に$_SESSION配列のデータが設定されているかどうかを確認する必要があります。

次のように使用します

$products = getSessionProducts(); 
foreach($products as $product) { 
    echo $product['name']; 
} 
于 2012-10-04T21:28:00.983 に答える
0

次のような粗雑なものを使用できます。

foreach($_SESSION AS $key => $val)
    if (preg_match("/item_name/i", $key)) {
        echo $val.'<br>';
    }
}

明らかに、試合が成功した場合に何をするかは、あなたが望む方法で処理します。これはアイデアを与えるためのものです。

ところで、他の人が言っていることを考えてみてください。セッション変数を管理している場合は、より適切で整理された方法で保存することをお勧めします。この厄介な例は、あなたが提供したもので機能します。

于 2012-10-04T21:20:11.240 に答える
0

「変数変数名をどのように処理すればよいですか?」と自問し始めるときはいつでも。あなたが間違った方向に向かっているという良い兆候です。ご覧のとおり、 を探すのは難しく、不自然です$_SESSION['item_number_$n']。ただし、簡単なのは、幸いなことに、セッションに保存できる配列の内容をループすることです (これは、ページの読み込み間で保持される方法を除けば、単なる通常の配列です)。

つまり、 への行き方を理解しようとするのではなく$_SESSION['item_number_5']、 を見るだけです$_SESSION['shopping_cart'][5]。これにより、アイテムの反復、アイテム数のカウント、アイテムの追加、アイテムの削除が簡単になり、全体的に全体的に操作するのが一般的にきれいになります。

于 2012-10-04T21:21:15.467 に答える
0

とにかく、この種の情報を保存するためにセッション変数を使用するべきではありません。カートに関するすべての情報をセッション変数に直接保存するのではなく、セッション内のデータベース内のショッピング カートを参照するための ID を保存する必要があります。

于 2012-10-04T21:26:02.130 に答える