我有每个循环,当循环输出篮子数组中保存的项目。这很好用,但是我想在会话变量中为每个EACH项存储一些内容,所以我可以在其他地方使用这些信息,我试图在foreach循环中创建会话变量,但当然变量需要每次都有不同的名称它循环通过一个不同的项目。我已经研究过如何动态创建变量,我无法弄清楚。这是我一直认为会派上用场的东西,但由于看起来很困难,我只是避免它,但现在我想知道它是否可能。
这是我的每个循环代码,你可以看到我想为篮子里的每个项目创建的三个会话变量:
foreach ($basketarray as $value)
{
echo "<div id='basketitems'><br/>
".$value['name']."<br/>
".$value['id']."<br/>
£".$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 £ ".number_format($baskettotal, 2, '.', ',')."</p>";
if($basketitems && $baskettotal !=0)
{
echo "<a href='clear.php'>Empty Basket</a>";
echo "<a href='checkout.php'>Checkout</a>";
}
所以可以这样做吗?我试图通过使用计数器创建可变名称,但我没有成功。
我很感激任何建议。
由于
答案 0 :(得分: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";
}
答案 1 :(得分: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
}
答案 2 :(得分:1)
将值存储到数组$products[$items]["prodId"]
中,然后在循环之后将会话变量设置为数组$_SESSION["products"] = $products
。然后,您可以使用$_SESSION["products"][$itemNumber]["prodId"]
等访问项目。
答案 3 :(得分:1)
您可以使用serialize()和unserialize()函数在会话中保存整个数组:
$_SESSION['sbasketarray'] = serialize($basketarray);
以及需要数据的其他脚本:
if (isset ( $_SESSION['sbasketarray'] )) {
$basketarray = unserialize ( $_SESSION['sbasketarray'] );
}