douchongbang6011 2009-12-11 17:18
浏览 27
已采纳

在PHP中对相关项进行分组

I have some rows in a database which represent line items in a sale. Each line item has five columns:

  • id : Primary key.
  • sale_id : The sale that this line-item is a part of (a foreign key to a Sales table).
  • product_id : The product this item corresponds to (a foreign key to a Products table).
  • group : The line-items group that this item is a part of.
  • is_subitem : Whether this line item is a subitem or not. There is guaranteed to be exactly one "false" value here for any group of line items that have the same group value.

I would like to iterate over all the rows for a particular sale_id to produce a list where:

  • line items with identical group values are associated together
  • the line item with is_subitem == false for that group appears first

How can I create a data structure which facilitates this and iterate the way I'd like?

  • 写回答

2条回答 默认 最新

  • duanlv2788 2009-12-11 17:36
    关注

    Something like this might work.. I haven't tested it.

    
    $data = array();
    $result = mysql_query( $your_query_here );
    
    while( $row = mysql_fetch_assoc( $result ) )
    {
        if( !isset( $data[$row['group']] ) )
        {
            $data[$row['group']] = array();
        }
    
        if( false == $row['is_subitem'] )
        {
            // when subitem is false we put the item at at the front of the array by unshifting it.
            array_unshift( $data[$row['group']], $row );
        }
        else
        {
            // else we just add the row to the end.
            $data[$row['group']][] = $row;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据