0

我有每个循环,当循环输出篮子数组中保存的项目时。这很好用,但我想在会话变量中为每个项目存储一些东西,以便我可以在其他地方使用这些信息,我试图在 foreach 循环中创建会话变量,但当然变量每次都需要有不同的名称它循环通过不同的项目。我研究过如何动态创建变量,我想不通。这是我一直觉得会派上用场的东西,但似乎很难,我只是避免它,但现在我想知道它是否可能。

这是我的 for each 循环代码,您可以在我要为篮子中的每个项目创建的三个会话变量中看到:

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

将您的值存储到一个数组$products[$items]["prodId"]中,依此类推,在循环之后将您的会话变量设置为数组,$_SESSION["products"] = $products. 然后,您可以访问这些项目,$_SESSION["products"][$itemNumber]["prodId"]依此类推。

于 2012-04-26T16:52:24.933 回答
1

您可以使用 serialize() 和 unserialize() 函数将整个数组保存在会话中:

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

在其他需要数据的脚本中:

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