如何使用php将动态mysql垂直数据显示为水平

I want to display dynamic mysql vertical data to horizontal in html table using PHP. And my table is like

mysql> select * from role_perm;

-------------------------------------------
| id  | userID  | roleID | permID | value | 
--------------- ---------------------------
| 1   |   2     |   1    |   1    | 1     |
|------------------------------------------
| 2   |   2     |   1    |   2    | 0     |
|------------------------------------------
| 3   |   2     |   1    |   3    | 0     |
|------------------------------------------
| 4   |   2     |   2    |   4    | 0     |
-------------------------------------------
| 5   |   2     |   2    |   1    | 1     |
|------------------------------------------
| 6   |   2     |   2    |   2    | 1     |
|------------------------------------------
| 7   |   2    |   2    |   3    | 0     |
|------------------------------------------
| 8   |   2     |   2    |   4    | 1     |
-------------------------------------------
| 9   |   5     |   1    |   1    | 1     |
|------------------------------------------
| 10  |   5     |   1    |   2    | 0     |
|------------------------------------------
| 11  |   5     |   1    |   3    | 0     |
|------------------------------------------
| 12  |   5     |   1    |   4    | 0     |
-------------------------------------------

and so on...

and i want to display in html table like

----------------------------
|  role | permissions      |
----------------------------
|   1   |   1 | 2 | 3 | 4  |
---------------------------- 
|   2   |   1 | 2 | 3 | 4  |
----------------------------
|   3   |   1 | 2 | 3 | 4  |
-----------------------------
|   4   |   1 | 2 | 3 | 4  |
----------------------------

could you pls help me. Thank you in advance.

Try this:

SELECT 
roleID AS role,
GROUP_CONCAT(DISTINCT permID ORDER BY permID ASC SEPARATOR '|') AS permissions 
FROM role_perm 
GROUP BY roleID 
ORDER BY roleID  

I suppose you could do this with a nifty MySQL query as well (which would supposedly be better for performance), but since I'm not that good at SQL, here's the PHP solution:

$arrRoles = array();
while ($row = mysql_fetch_assoc($result)) {
   if (!isset($arrRoles[$row['roleID']])) {
       $arrRoles[$row['roleID']] = array();
   }
   $arrRoles[$row['roleID']][$row['permID']] = $row['value'];
}
var_dump($arrRoles);