首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:会话2维数组-跟踪查看的产品

PHP:会话2维数组-跟踪查看的产品
EN

Stack Overflow用户
提问于 2009-05-01 02:46:17
回答 1查看 5.4K关注 0票数 0

我正在尝试创建一个数组来显示客户查看过的最后5个产品。

这个数组是一个二维数组,如下所示.

$RView=数组(数组( ID => "1001",RefCode => "Ref_01",名称=> "Name_01“),.数组( ID => "1005",RefCode => "Ref_05",名称=> "Name_05“);

数组值从产品记录集中检索,并设计为在客户访问产品页时按如下方式工作。

  • 页面将检查会话数组是否存在
  • 如果是,则从现有会话创建数组变量

如果不是,则创建一个新数组。

  • array将添加新产品详细信息。如果数组中有5种以上的现有产品,则

  • array将计算在内。如果有,则会删除最老的产品。

如果没有,则进入下一步。

  • 会话是从修改后的

  • 创建/更新的。

我目前的努力如下..。

非常感谢你的帮助。

代码语言:javascript
运行
复制
    <?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>";
    }
    ?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-01 02:54:49

它或多或少是正确的-只需要改变两行。

不需要在array_pop.

  • When和array_unshift($RView, array($prodid,$name,...))

  • What周围添加额外的数组()--您使用的是array_unshift --您正在推送一个条目数组(而不是单独的id/代码)--我认为如果$RView没有5个元素,那么它的意思是array_unshift($RView, array($prodid,$name,...))

  • What?在这种情况下,您正在访问未定义的数组索引(这可能显示错误,也可能不显示错误)。将其更改为foreach循环。

foreach ($Rview as $prod) echo $prod['Name']...

在你做出这些改变之后,它应该会起作用。不过,您可能需要稍微清理一下编码样式:)

编辑:哦,我知道了,当您在for循环中引用数组时,它不知道数组中有"ProdID“和"Name”索引。创建数组时,必须使用=>运算符定义索引。

  • 在array_unshift时向数组添加索引:

如果array_unshift($RView, array("ProdID" => $row_rsProd["ProdID"], "Name"...))

  • 不太大,您可以直接将整个row_rsProd插入$RView。

所以改变array_unshift(.)只为$RView[] = $row_rsProd

这样,索引就是preserved.

  • Alternatively,您可以将for循环中的指标更改为匹配。现在,您取消转移到$RView上的数组是基于0的- $RView是第一个产品的产品ID,等等。

因此,您可以将foreach循环中的内容更改为

echo "<li>..." $prod[0] $prod[1] $prod[2]

希望这能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/810003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档