我不知道如何按我想要的方式对数组进行排序


Can't figure out how to sort through an array the way I want to

所以我正在研究一个权限系统。它基本上是一个基于角色的系统。我有一个具有多对多关系的组表和一个任务表,以及一个将它们绑定在一起的权限表。

数据看起来像这样(任务表):

+-----+--------+---------+----------+
| id  |  task  |  group  |  parent  |
|-----------------------------------|
|  1  |  view  |  news   |          |
|-----------------------------------|
|  2  |  edit  |  news   |          |
|-----------------------------------|
|  3  |  view  | forums  |          |
|-----------------------------------|
|  4  |a forum | forums  |   view   |
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

我想做的是允许每个组对每个页面有特定的权限。但当需要时,可以提供更多的特异性。例如,在一个论坛页面上,我希望能够控制哪个组可以查看/编辑帖子/删除帖子/从每个单独的论坛等。

这都是工作-我的问题是如何显示这些数据,以便它可以分配。我想让它看起来是这样的:

News
-- View
-- Edit
Forums 
-- View
---- a forum
-- Edit
---- a forum

我只是不知道如何格式化这个数组来完成这个

Array
(
    [0] => Array
        (
            [task] => view
            [group] => news
            [parent] => 
        )
    [1] => Array
        (
            [task] => edit
            [group] => news
            [parent] => 
        )
    [2] => Array
        (
            [task] => view
            [group] => forums
            [parent] => 
        )
    [3] => Array
        (
            [task] => a forum
            [group] => forums
            [parent] => view
        )
)

很抱歉让人困惑的帖子!

好了,现在完全重新格式化我的答案,因为它是有点模棱两可,究竟什么是不工作。

首先像这样重新排列数组:

while($result = $query->fetch_assoc())
{
    $group = $result['group'];
    foreach($result as $field => $value)
    {       
        $data[$group][$field] = $value;
    }   
}

然后你可以遍历它:

foreach($data as $group) 
{
    echo $group;
    foreach($group as $task => $value) 
    { 
         if($task == 'parent' && $task != '') { $indent = '----';} 
         else {$indent = '--'; }
         echo $indent,$task;
    }
}

这些都是我脑海中勾勒出来的,所以我希望它能起作用,而且这次是你想要的。