热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP:会话二维数组-跟踪已浏览产品-PHP:Session2-DimensionalArray-TrackViewedProducts

Imtryingtocreateanarraytodisplaythelast5productsacustomerhasviewed.我正在尝试创建一个数组来显示客户

I'm trying to create an array to display the last 5 products a customer has viewed.

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

The array is a 2 dimensional array like below...

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

$RView= array( array( ID => "1001", RefCode => "Ref_01", Name => "Name_01" ), ... array( ID => "1005", RefCode => "Ref_05", Name => "Name_05" ) );

$ RView = array(array(ID =>“1001”,RefCode =>“Ref_01”,Name =>“Name_01”),... array(ID =>“1005”,RefCode =>“Ref_05”,Name = >“Name_05”));

The array values are retrieved from the products recordset and is designed to function as follows when a customer visits a product page.

从产品记录集中检索数组值,并在客户访问产品页面时按如下方式运行。

  • Page will check if a Session Array exists
  • 页面将检查是否存在会话数组

  • If yes, an array variable is created from existing Session
    If no, a new array is created.
  • 如果是,则从现有会话创建数组变量如果否,则创建新数组。

  • Array will add the new product details.
  • Array将添加新产品详细信息。

  • Array will count if there are more than 5 existing products in the array.
  • 如果阵列中存在超过5个现有产品,则数组将计数。

  • If yes, it will remove the oldest.
    If no, moves to next step.
  • 如果是,它将删除最旧的。如果不是,请转到下一步。

  • A Session is created/updated from the revised Array.
  • 从修订的阵列创建/更新会话。

My current effort is attached below...
Many thanks for any help.

我目前的努力如下:非常感谢您的帮助。

     5) {
    array(array_pop($RView)); }

    // Update Session for next page
    $_SESSION['sessRView'] = $RView;

    // Display Array
    for ($row = 0; $row <5; $row++)
    {
    echo "";
    }
    ?>

1 个解决方案

#1


It's more or less right - just 2 lines need to be changed.

它或多或少是正确的 - 只需要更改2行。

  1. There's no need for the extra array() around array_unshift and array_pop.
  2. array_unshift和array_pop周围不需要额外的array()。

  3. When you use array_unshift you're pushing an array of items (not the id/codes individually) - I think you mean array_unshift($RView, array($prodid,$name,...))
  4. 当你使用array_unshift时,你正在推送一个项目数组(而不是单独的id /代码) - 我认为你的意思是array_unshift($ RView,array($ prodid,$ name,...))

  5. What if $RView doesn't have 5 elements? In that case you're accessing undefined array indices (which may or may not show an error). Change it to a foreach loop: e.g.
    foreach ($Rview as $prod) echo $prod['Name']...
  6. 如果$ RView没有5个元素怎么办?在这种情况下,您正在访问未定义的数组索引(可能会也可能不会显示错误)。将其更改为foreach循环:例如foreach($ Rview as $ prod)echo $ prod ['Name'] ...

It should work after you make these changes. You might want to clean up the coding style a bit, though :)

进行这些更改后,它应该可以正常工作。你可能想稍微清理编码风格,但:)


EDIT: Oh, I see, when you're referencing the array in the for loop it doesn't know that the array has "ProdID" and "Name" indices. When you make an array you have to define the indexes using the => operator.

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

  • Add indexes to the array when you array_unshift:
    array_unshift($RView, array("ProdID" => $row_rsProd["ProdID"], "Name"...))

    在array_unshift中为数组添加索引:array_unshift($ RView,array(“ProdID”=> $ row_rsProd [“ProdID”],“Name”......))

  • If row_rsProd isn't too big, you can just tack the entire row_rsprod onto $RView.
    so change array_unshift(...) to just $RView[] = $row_rsProd
    This way the indexes are preserved.

    如果row_rsProd不是太大,你可以将整个row_rsprod添加到$ RView上。所以将array_unshift(...)改为$ RView [] = $ row_rsProd这样就保留了索引。

  • Alternatively you can change the indicies in the for loop to match. Right now the array you unshift onto $RView is 0-based - $RView[0][0] is the product ID for the first product, etc.
    So you can change the stuff in the foreach loop to
    echo "
  • ..." $prod[0] $prod[1] $prod[2]
  • 或者,您可以更改for循环中的标记以匹配。现在你卸载到$ RView的数组是基于0的 - $ RView [0] [0]是第一个产品的产品ID,等等。所以你可以改变foreach循环中的东西来回显“

  • 。 ..“$ prod [0] $ prod [1] $ prod [2]

Hope that helps!

希望有所帮助!


推荐阅读
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 本文介绍了一道经典的状态压缩题目——关灯问题2,并提供了解决该问题的算法思路。通过使用二进制表示灯的状态,并枚举所有可能的状态,可以求解出最少按按钮的次数,从而将所有灯关掉。本文还对状压和位运算进行了解释,并指出了该方法的适用性和局限性。 ... [详细]
  • 本文主要介绍了gym102222KVertex Covers(高维前缀和,meet in the middle)相关的知识,包括题意、思路和解题代码。题目给定一张n点m边的图,点带点权,定义点覆盖的权值为点权之积,要求所有点覆盖的权值之和膜qn小于等于36。文章详细介绍了解题思路,通过将图分成两个点数接近的点集L和R,并分别枚举子集S和T,判断S和T能否覆盖所有内部的边。文章还提到了使用位运算加速判断覆盖和推导T'的方法。最后给出了解题的代码。 ... [详细]
author-avatar
詹建红_335
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有