【问题标题】:php echo records from array grouped by specific recordphp 来自按特定记录分组的数组的回显记录
【发布时间】:2012-09-05 05:04:37
【问题描述】:

我有两张桌子:

房间
room_id>>>room_name

1 次足底按摩 2 脸部按摩 3 背部按摩

订单
room_id >>>start_date>>>>>>>end_date>>>>>>>>价格

1 2012.09.10 2012.09.11 100 1 2012.09.11 2012.09.13 200 2 2012.11.11 2012.11.13 100 3 2012.12.11 2012.12.13 500

我想输出这样的结果:

1号房间:

2012.09.10 2012.09.11 100 2012.09.11 2012.09.13 200

2号房间:

2012.11.11 2012.11.13 100

3号房间:

2012.12.11 2012.12.13 500

代码:

$query_spa = "SELECT 
rooms.room_id,
rooms.room_name,
orders.start_date,
orders.end_date,
orders.price
FROM rooms
INNER JOIN orders
ON
 rooms.room_id =orders.room_id";

 $spa = mysql_query($query_spa, $localhost) or die(mysql_error());
 $results = array();
 while($line = mysql_fetch_array($spa, MYSQL_ASSOC)){
$results[] = $line;
  }


  $groups = array();
 foreach($results as $item)
 $groups[$item['room_id']][] = $item;
  foreach($groups as $value => $items)
      echo 'room number ' . $value . ' : ' ;
for ($i=0; $i< count($items);$i++)
{
echo $items[$i]['start_date'] ;
echo $items[$i]['end_date'] ;
echo $items[$i]['price'] ;
}

输出:

一号房:二号房:三号房:2012.12.11 2012.12.13 500

【问题讨论】:

    标签: php mysql multidimensional-array grouping


    【解决方案1】:

    试试这个:

    $groups = array();
    foreach($results as $item)
        $groups[$item['room_id']][] = $item;
    
    foreach($groups as $value => $items)
    {
        echo 'room number ' . $value . ' : ' ;
        foreach ($items as $item)
        {
            echo $item['start_date'] ;
            echo $item['end_date'] ;
            echo $item['price'] ;
        }
    }
    

    您可以使用简单的 foreach 循环遍历子项。但最好在获取步骤上进行分组排序:

    while($line = mysql_fetch_array($spa, MYSQL_ASSOC)){
        $groups[$line['room_id']][] = $line;
    }
    

    所以你在获取后立即得到了排序结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多