Здравствуйте, у меня есть два массива: один $ role и второй $ разрешение. Я хотел бы объединить эти два массива на основе ключа из ролей, если он равен значению из второго массива. Я не уверен, как это сделать, я попытался с foreach, но я застрял на проверке значения и присвоение конечного результата должно быть что-то похожее на $ rolePermissions.
// Roles indexed by ID
$roles = array(
1 => 'Administrator',
2 => 'Moderator',
3 => 'Admin',
4 => 'User',
5 => 'SuperUser',
6 => 'Accountant',
7 => 'God'
);
// Permissions indexed by ID
$permissions = array(5)
[
0 => array(2)
[
"PermissionName" => string(12) "Catalog-View""RoleId" => string(2) "22"]
1 => array(2)
[
"PermissionName" => string(12) "Catalog-View""RoleId" => string(2) "23"]
2 => array(2)
[
"PermissionName" => string(12) "Catalog-Edit""RoleId" => string(2) "22"]
3 => array(2)
[
"PermissionName" => string(14) "Catalog-Delete""RoleId" => string(2) "22"]
4 => array(2)
[
"PermissionName" => string(14) "Article-Delete""RoleId" => string(2) "22"]
]
// Assign role IDs to permission IDs, array is indexed by role ID
$rolePermissions = array(
1 => array(1),
2 => array(1, 2),
3 => array(1, 2, 3)
);
РЕДАКТИРОВАТЬ:
То, что я сделал до сих пор, но не смог получить результат.
foreach ($roles as $key => $value) {
foreach($permissions as $row) {
if($key == $row['RoleId'])
$perm[$key][] = $row;
}
}
в $roles
у вас есть идентификаторы ролей чисел 1,2,3,4,5,6,7
в $permissions
у вас есть идентификаторы ролей с номерами 22 или 23
конечно, он никогда не найдет соответствия
Других решений пока нет …