V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
swuhvxee
V2EX  ›  问与答

新手请教一个关于 MySQL 和 PHP 取值排序的问题

  •  1
     
  •   swuhvxee · 2018-02-01 13:27:43 +08:00 · 1604 次点击
    这是一个创建于 2480 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在通过 sql 按照时间排序取出最新的 50 条商品数据, 然后 while 输出这 50 条商品信息。

    同时,需要取出这 50 条中点击量最高的 1 条或者多条信息,怎么做?

    wayne712
        1
    wayne712  
       2018-02-01 13:49:34 +08:00   ❤️ 1
    遍历 50 条商品信息, 将所有点击量数据存到另外一个数组, 然后对这个点击量数组进行排序, 最后根据已排序的点击量数组下标值反查商品信息数组即可
    swuhvxee
        2
    swuhvxee  
    OP
       2018-02-01 13:55:09 +08:00
    @wayne712 是在 while 中把点击量存入数组进行比较,然后取出最大的吧。我也这么想过,有没有更简单的方法呢
    swuhvxee
        3
    swuhvxee  
    OP
       2018-02-01 13:55:53 +08:00
    @wayne712 因为新手,我也想到了这个办法,总觉得是个笨办法,是我的幻觉还是只能这么解决
    wellCh4n
        4
    wellCh4n  
       2018-02-01 15:11:08 +08:00
    写两条 sql,一条获取 50 条,一条获取 50 条里面点击量最高的那条
    eslizn
        5
    eslizn  
       2018-02-01 15:14:08 +08:00
    点击量有在商品中存储么?有的话 usort 一下就可以了
    zakokun
        6
    zakokun  
       2018-02-01 15:14:46 +08:00
    你要取最新的 50 条,然后这 50 条中拿最高的 N 条

    那自然就是数据库 select 50 个呗,拿出来以后 foreach 排序。 这思路很自然 你还想怎么优化?
    swuhvxee
        7
    swuhvxee  
    OP
       2018-02-01 15:19:01 +08:00
    @eslizn
    @zakokun 这样 usort,foreach 排序会不会打乱原有的 50 条排序
    swuhvxee
        8
    swuhvxee  
    OP
       2018-02-01 15:21:13 +08:00
    @eslizn
    @zakokun
    这个需求确实很蛋疼,又要按照时间排序输出商品列表。
    又要输出其中这些商品的热门商品
    swuhvxee
        9
    swuhvxee  
    OP
       2018-02-01 15:46:07 +08:00
    此问题已解决。感谢解惑
    b821025551b
        10
    b821025551b  
       2018-02-01 15:47:05 +08:00
    这个需求本身就很矛盾吧。。。。
    swuhvxee
        11
    swuhvxee  
    OP
       2018-02-01 15:52:50 +08:00
    @b821025551b 不矛盾啊,时间排序和热门排序本身就不矛盾。。。关键是我在练习这个项目中,不想额外添加 sql,因为不知道是否可以在一个动作内解决
    zakokun
        12
    zakokun  
       2018-02-01 16:02:14 +08:00
    @swuhvxee 你用个新的数组处理排序啊, 这种需求很正常吧,多做做就好 比如很多的最新 50 个的榜单,然后给这 50 个中最热门的标记一个『最热』之类的,正常
    swuhvxee
        13
    swuhvxee  
    OP
       2018-02-01 16:18:28 +08:00
    @zakokun 我也是这么做的,把点击量放到一个数组里比较然后找出下标来判断了。感谢你的回答
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2725 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 10:10 · PVG 18:10 · LAX 02:10 · JFK 05:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.