PHP来自数据库的多维数组

时间:2018-04-03 08:17:50

标签: php arrays multidimensional-array

我想输出一个来自数据库的三维数组。这是我的数据库看起来像:

enter image description here

基本上,我希望我的第一个数组将是header_name,而在header_name下面sub_header_name将会出现在name

下面

例如:

    User Role Management => array(
                          '' => array (
                                   'Create User Role'
                               ) 
                            ),
   Config Management => array(
                         'Organisation' => array('Create Country','Create 
                                           Organisation'),
                          'Site' => array('Create Site','Edit Site') 
                        )

这是我的代码:

$getAllPermission = Permission::get();
$arrHeader = array();
$arrSubHeader = array();
$arrPermissions = array();
// $x = 0;
foreach($getAllPermission as $value){
    $title = $value->header_name;
    $sub_header_name = $value->sub_header_name;
    $permission_name = $value->name;
    if ($sub_header_name == ""){
        $sub_header_name = 0;
    }
    array_push($arrPermissions,$permission_name);
    $arrHeader[$title] = array($sub_header_name => array($arrPermissions));
    //$x++;

}

我的输出是这样的:

enter image description here

1 个答案:

答案 0 :(得分:1)

每次循环都会推送到相同的$arrPermissions数组,这就是为什么每个角色都会获得权限数组越来越长的副本。

每次循环都会覆盖$arrHeader[$title],而不是向其添加新密钥。

对于空'',您所需的输出的密钥为sub_header_name,因此我不明白为什么您设置了if的{​​{1}}。

应该只是:

$sub_header_name = 0;