从特定记录分组的数组中的php echo记录

时间:2012-09-12 08:07:44

标签: php mysql multidimensional-array grouping

我有两张桌子:

客房
ROOM_ID>>> ROOM_NAME

1       foot massage
2       face massage
3       back massage

订单
room_id>>> start_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'] ;
}

输出:

1号房间:2号房间:3号房间:2012.12.11 2012.12.13 500

1 个答案:

答案 0 :(得分:4)

试试这个:

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

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