0

ループ時にバスケット配列に保持されているアイテムを出力する for each ループがあります。これはうまく機能しますが、各項目ごとにいくつかのものをセッション変数に保存して、この情報を他の場所で使用できるようにしたいのですが、foreach ループ内でセッション変数を作成しようとしていますが、もちろん、変数には毎回異なる名前を付ける必要があります別のアイテムをループします。変数を動的に作成する方法を調べましたが、わかりませんでした。これは私がいつも重宝すると感じていたものですが、難しそうなので避けていますが、今はそれが可能かどうか知りたいです.

これが for each ループ コードです。バスケット内の各アイテムに対して作成したい 3 つのセッション変数の内部を見ることができます。

foreach ($basketarray as $value)
{
    echo "<div id='basketitems'><br/>                                       
    ".$value['name']."<br/>
    ".$value['id']."<br/>
     &pound;".$value['price']."<br/>
     ".$value['size']."<br/>
    Quantity: ".$value['quantity']."<br/><br/>
    <img id='searchimage' src=".$value['picture']." width='210' height='250' /><br/>";

    $_SESSION['Bprodid'] = $value['id'];
    $_SESSION['Bprodquantity'] = $value['quantity'];
    $_SESSION['Bprodprice'] = $value['price'];

echo "<form action='deletefrombasket.php' name='basketdelete$items' id='basketdelete$items' method='POST'>

    <input type='submit' name='".$value['basketid']."' value='Remove' id='basketid' name='basketid'/>

    </form></div>";

$items++;
}
?>
    <div id='basketdetails'>
<?php

echo "<p>items ". number_format($basketitems)."</p>";
echo "<p>Total &pound; ".number_format($baskettotal, 2, '.', ',')."</p>";


if($basketitems && $baskettotal !=0)
{
    echo "<a  href='clear.php'>Empty Basket</a>";
    echo "<a  href='checkout.php'>Checkout</a>";
}

それで、このようなことをすることは可能ですか?カウンターを使用して変数名を作成しようとしましたが、失敗しました。

アドバイスをいただければ幸いです。

ありがとう

4

4 に答える 4

3

値を配列に入れます。次に、ループごとにインクリメントするカウンターを使用して、各値のキーとして sderver を設定します。

$counter = 0;
foreach ($basketarray as $value)
{
    // Code goes here

    $_SESSION['Bprodid'][$counter] = $value['id'];
    $_SESSION['Bprodquantity'][$counter]  = $value['quantity'];
    $_SESSION['Bprodprice']$counter[]  = $value['price'];

    // More code
    $counter++
}

各値にアクセスするには、for ループを使用します。

$size = count($_SESSION['Bprodid']);
for ($i = 0; $i < $size; $i++)
{
    echo $_SESSION['Bprodid'][$i] . "<br>\n";
    echo $_SESSION['Bprodquantity'][$i] . "<br>\n";
    echo $_SESSION['Bprodprice'][$i] . "<br><br>\n";
}
于 2012-04-26T16:49:35.760 に答える
2

セッション変数は多次元配列になる可能性があるため、ループの前に次のように言えます。

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

そしてループで:

$_SESSION['my_values'][$value['id']]['Bprodquantity'] = $value['quantity'];
$_SESSION['my_values'][$value['id']]['price'] = $value['price'];
// etc.

編集:使用できるすべての値をループするには:

foreach ($_SESSION['my_values'] as $key => $values)
{
  echo $key; // the ID of your product
  echo $values['quantity']; // the quantity
  echo $values['price']; // the price
}
于 2012-04-26T16:50:16.780 に答える
1

serialize() および unserialize() 関数を使用して、配列全体をセッションに保存できます。

$_SESSION['sbasketarray'] = serialize($basketarray);

データが必要な他のスクリプトでは:

if (isset ( $_SESSION['sbasketarray'] )) {
    $basketarray = unserialize  ( $_SESSION['sbasketarray'] );
} 
于 2012-04-26T17:17:36.603 に答える
1

値を配列$products[$items]["prodId"]などに格納し、ループの後でセッション変数を配列に設定します$_SESSION["products"] = $products。その後、などでアイテムにアクセスできます$_SESSION["products"][$itemNumber]["prodId"]

于 2012-04-26T16:52:24.933 に答える