массивы — udiff сравнивает несколько значений

У меня есть два многомерных массива, и мне нужно сравнить их. Проблема в том, что каждый подмассив уникален permission_id, create а также view, И мне нужно сравнить эти массивы, чтобы проверить, существует ли такой уникальный подмассив. Ключи подмассивов могут быть разными. Пока у меня есть это:

$updated_permissions = array(
0 => array(
'create' => 0,
'view' => 1,
'permission_id' => "87"),
1 => array(
'create' => 0,
'view' => 1,
'permission_id' => "11"),
2 => array(
'create' => 1,
'view' => 0,
'permission_id' => "11"),
3 => array(
'create' => 0,
'view' => 1,
'permission_id' => "18")
);

$origin_permissions = array(
0 => array(
'create' => 0,
'view' => 1,
'permission_id' => "8"),
1 => array(
'create' => 0,
'view' => 1,
'permission_id' => "11"),
2 => array(
'create' => 1,
'view' => 0,
'permission_id' => "12")
);

$arrdiff = array_merge(
array_udiff($origin_permissions, $updated_permissions, 'udiffCompare'),
array_udiff($updated_permissions, $origin_permissions, 'udiffCompare')
);

function udiffCompare($a, $b) {
return $a['permission_id'] - $b['permission_id'];
}

print_r($arrdiff);

но это только сравнить permission_id так что результат таков:

[0] => Array (
[create] => 0
[view] => 1
[permission_id] => 8
)
[1] => Array (
[create] => 1
[view] => 0
[permission_id] => 12
)
[2] => Array (
[create] => 0
[view] => 1
[permission_id] => 87
)
[3] => Array (
[create] => 0
[view] => 1
[permission_id] => 18
)

в то время как мне нужно сравнить также, если create а также view такие же. Таким образом, результат, который я хочу получить, это (с permission_id 11, который имеет разные create а также view):

[0] => Array (
[create] => 0
[view] => 1
[permission_id] => 8
)
[1] => Array (
[create] => 1
[view] => 0
[permission_id] => 12
)
[2] => Array (
[create] => 0
[view] => 1
[permission_id] => 87
)
[3] => Array (
[create] => 0
[view] => 1
[permission_id] => 18
)
[4] => Array (
[create] => 1
[view] => 0
[permission_id] => 11
)

Этот код также Вот

0

Решение

Как это ?

function udiffCompare($a, $b) {
if ($a['permission_id'] !== $b['permission_id'] || $a['view'] !== $b['view'] || $a['create'] !== $b['create']){
return 1;
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector