PHP:Session二维数组-跟踪查看的产品
我正在尝试创建一个数组来显示客户最近查看的5种产品 数组是一个二维数组,如下所示 $RView=数组( 数组(ID=>“1001”,RefCode=>“Ref\u 01”,Name=>“Name\u 01”), ... 数组(ID=>“1005”,RefCode=>“Ref_05”,Name=>“Name_05”) ); 数组值从产品记录集中检索,并设计为在客户访问产品页面时按如下方式运行PHP:Session二维数组-跟踪查看的产品,php,arrays,session,multidimensional-array,Php,Arrays,Session,Multidimensional Array,我正在尝试创建一个数组来显示客户最近查看的5种产品 数组是一个二维数组,如下所示 $RView=数组( 数组(ID=>“1001”,RefCode=>“Ref\u 01”,Name=>“Name\u 01”), ... 数组(ID=>“1005”,RefCode=>“Ref_05”,Name=>“Name_05”) ); 数组值从产品记录集中检索,并设计为在客户访问产品页面时按如下方式运行 页面将检查会话数组是否存在 如果是,则从现有会话创建数组变量 如果否,则创建一个新数组 数组将添加新产
- 页面将检查会话数组是否存在
- 如果是,则从现有会话创建数组变量
如果否,则创建一个新数组 - 数组将添加新产品的详细信息
- 如果阵列中的现有产品超过5个,则阵列将计算在内
- 如果是,它将删除最旧的。
如果否,则转到下一步李> - 将根据修改后的数组创建/更新会话李>
非常感谢你的帮助
<?php
session_start()
// Get or Create Array
IF (isset($_SESSION['sessRView'])) {
$RView = ($_SESSION['sessRView']); }
ELSE {
$RView = array(array());
}
// Append currently viewed Product to Array
array(array_unshift($RView, $row_rsPrd['PrdID'], $row_rsPrd['RefCode'], $row_rsPrd['Name']));
// Check if more than 5 products exist in Array, if so delete.
IF (sizeof($RView) > 5) {
array(array_pop($RView)); }
// Update Session for next page
$_SESSION['sessRView'] = $RView;
// Display Array
for ($row = 0; $row < 5; $row++)
{
echo "<ul>";
echo "<li><a href='?PrdID=".$RView[$row]["PrdID"]."'>".$RView[$row]["RefCode"]."</a> : ".$RView[$row]["Name"]."</li>";
echo "</ul>";
}
?>
大致正确-只需更改两行即可
array\u unshift($RView,array($prodid,$name,…)
foreach($Rview as$prod)echo$prod['Name']…
编辑:哦,我明白了,当你在for循环中引用数组时,它不知道数组有“ProdID”和“Name”索引。创建数组时,必须使用=>运算符定义索引
- 在数组\u取消移位时向数组添加索引:
array\u unshift($RView,array(“ProdID”=>$row\u rsProd[“ProdID”],“Name”…))
- 如果row\u rsProd不是太大,您可以将整个row\u rsProd钉在$RView上。
因此,将array_unshift(…)更改为just$RView[]=$row\u rsProd
这样就保留了索引 - 或者,您可以更改for循环中的标记以匹配。现在,您解压到$RView上的数组是基于0的-$RView[0][0]是第一个产品的产品ID,等等。
因此,您可以将foreach循环中的内容更改为
echo“
- …”$prod[0]$prod[1]$prod[2]
希望有帮助 谢谢你的帮助。我已经做了您建议的更改(我想),但是我无法显示数组中的值。我刚刚得到5个项目符号的HTML列表。我所做的改变是。。。数组_unshift($RView,数组($row_rsPrd['PrdID'],$row_rsPrd['RefCode'],$row_rsPrd['Name']);--如果(sizeof($RView)>5{array_pop($RView);}--foreach($RView作为$prod){echo“
- “echo”
- :“$prod[“Name”]。” “echo”
我已经做了您建议的更改(我想),但是我无法显示数组中的值。我刚刚得到5个项目符号的HTML列表
我所做的更改是…
数组取消移位($RView,array($row_rsPrd['PrdID'],$row_rsPrd['RefCode'],$row_rsPrd['Name'])
--
如果(sizeof($RView)>5)
{array_pop($RView);
foreach($RView as$prod){
echo“
- ”;
- :“$prod[“Name”]。” “
echo”
echo”
知道怎么了吗?对不起,上面的文字太乱了,但我还是遗漏了一些东西,或者不可能使用“添加评论”以可读的格式编写回复。感谢提供更多信息。你的第一个要点解决方案成功了。数组_unshift($RView,数组(“PrdID”=>$row_rsPrd['PrdDetID'],“RefCode”=>)。。。