我想输出一个来自数据库的三维数组。这是我的数据库看起来像:
基本上,我希望我的第一个数组将是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++;
}
我的输出是这样的:
答案 0 :(得分:1)
每次循环都会推送到相同的$arrPermissions
数组,这就是为什么每个角色都会获得权限数组越来越长的副本。
每次循环都会覆盖$arrHeader[$title]
,而不是向其添加新密钥。
对于空''
,您所需的输出的密钥为sub_header_name
,因此我不明白为什么您设置了if
的{{1}}。
应该只是:
$sub_header_name = 0;