【发布时间】:2019-05-22 19:51:54
【问题描述】:
我想从$allPermissions 数组中删除$userPermissions 数组中的值。
怎么做? array_unique,array_diff我已经合并了,还没有来解决这个问题。有人什么?
public function notAssigned($id, Request $request)
{
$user = User::findOrFail($id);
$userPermissions = [{"id":5,"name":"create post","guard_name":"web","created_at":"2018-12-22 02:44:35","updated_at":"2018-12-22 02:44:35","pivot":{"model_id":3,"permission_id":5,"model_type":"App\\User"}}];
$allPermissions = [{"id":5,"name":"create post","guard_name":"web","created_at":"2018-12-22 02:44:35","updated_at":"2018-12-22 02:44:35"},{"id":6,"name":"edit post","guard_name":"web","created_at":"2018-12-22 02:44:46","updated_at":"2018-12-22 02:44:46"},{"id":7,"name":"delete post","guard_name":"web","created_at":"2018-12-22 02:44:59","updated_at":"2018-12-22 02:44:59"}];
$permissions = array_unique(array_merge($userPermissions, $allPermissions));
$role = auth()->user()->hasRole([2]);
$permission = auth()->user()->can('edit user permission');
if ( $role == true || $permission == true ) {
return $permissions;
} else {
abort(403, 'Access Denied');
}
}
编辑:
这些是var_dump 到$userPermissions 和$allPermissionsallPermissions 的输出:
var_dump($userPermissions):
array(1) { [0]=> object(stdClass)#361 (6) { ["id"]=> int(5) ["name"]=> string(11) "create post" ["guard_name"]=> string(3) "web" ["created_at"]=> string(19) "2018-12-22 02:44:35" ["updated_at"]=> string(19) "2018-12-22 02:44:35" ["pivot"]=> object(stdClass)#360 (3) { ["model_id"]=> int(3) ["permission_id"]=> int(5) ["model_type"]=> string(8) "App\User" } } }
var_dump($allPermissions):
array(3) { [0]=> object(stdClass)#374 (5) { ["id"]=> int(5) ["name"]=> string(11) "create post" ["guard_name"]=> string(3) "web" ["created_at"]=> string(19) "2018-12-22 02:44:35" ["updated_at"]=> string(19) "2018-12-22 02:44:35" } [1]=> object(stdClass)#377 (5) { ["id"]=> int(6) ["name"]=> string(9) "edit post" ["guard_name"]=> string(3) "web" ["created_at"]=> string(19) "2018-12-22 02:44:46" ["updated_at"]=> string(19) "2018-12-22 02:44:46" } [2]=> object(stdClass)#376 (5) { ["id"]=> int(7) ["name"]=> string(11) "delete post" ["guard_name"]=> string(3) "web" ["created_at"]=> string(19) "2018-12-22 02:44:59" ["updated_at"]=> string(19) "2018-12-22 02:44:59" } }
【问题讨论】:
-
$allPermissions = [{"..."}];这不是正确的 PHP 数组语法。它看起来像是一个数组中 JSON 的一些奇怪组合。 -
@ArtisticPhoenix 我从 Spatie\permissions 的内置函数中得到了这样一个数组。如何从中制作一个数组?
-
试试这个
$userPermissions = json_decode('{"id":5,"name":"create post",...}', true);我不知道你还能怎么做,你有一个PHP的编译器错误,这意味着它甚至不会完成解析这个文件,更不用说运行它了。但是没有确切地看到那些“东西”是我所能做的就是推断。 ` -
$userPermissions = json_decode($user->permissions[0], true);返回 {"id":5,"name":"create post", ... ,"pivot":{"model_id":3,"permission_id":5,"model_type":"App\\User"}}
-
正如我所说的,我没有看到
$userPermissions到底是什么,我无法告诉你,['{"id":6, ... }']和'[{"id":6, ... }]'之间有很大的不同,一个是数组,另一个是字符串,我没有知道除了您发布的内容之外您还有什么,[{"id":5,...}]在 PHP 中的语法不正确(所以不能是这样,否则它不会在变量中)
标签: php arrays laravel duplicates