开发者

Grouping related items in 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 prod开发者_JAVA技巧uct 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?


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;
    }
}


I edited the above a few times but it should be pretty good now.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜