无法弄清楚如何按照我想要的方式对数组进行排序

时间:2011-11-29 17:15:18

标签: php arrays

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

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

+-----+--------+---------+----------+
| 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
        )
)

抱歉这个令人困惑的帖子!

1 个答案:

答案 0 :(得分:0)

好的,现在完全重新格式化我的答案,因为它有点不明确究竟什么不起作用。

首先按如下方式重新排列数组:

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

所有这些都只是勾勒出我的头脑,所以我希望它有效,这次就是你想要的。