1, 'name' => 'anonymous user', 'permissions' => [ 'access content', ], ], [ 'rid' => 2, 'name' => 'authenticated user', 'permissions' => [ 'access comments', 'access content', 'post comments', 'post comments without approval', ], ], [ 'rid' => 3, 'name' => 'administrator', 'permissions' => [ 'access comments', 'administer comments', 'post comments', 'post comments without approval', 'access content', 'administer content types', 'administer nodes', ], ], ]; $data = [ [[], $expected], ]; foreach ($expected as $row) { foreach ($row['permissions'] as $permission) { $data[0][0]['role_permission'][] = [ 'permission' => $permission, 'rid' => $row['rid'], ]; } unset($row['permissions']); $data[0][0]['role'][] = $row; } return $data; } }