Объединить два массива, если одно из значений равно ключу

0

Здравствуйте, у меня есть два массива: одно $ 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)
);

EDIT: Что я сделал до сих пор, но не смог получить результат.

foreach ($roles as $key => $value) {
    foreach($permissions as $row) {
        if($key == $row['RoleId'])
            $perm[$key][] = $row;
    }
}
Теги:
php-5.3

1 ответ

1
Лучший ответ

в $roles role у вас есть идентификаторы ролей чисел 1,2,3,4,5,6,7

в $permissions вас есть идентификаторы ролей чисел 22 или 23

конечно, он никогда не найдет соответствия

Ещё вопросы

Сообщество Overcoder
Наверх
Меню