【发布时间】:2015-09-01 08:55:51
【问题描述】:
我有两个多维数组,我需要比较它们。问题是每个子数组通过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
)
这个代码也是here
【问题讨论】:
标签: php arrays multidimensional-array diff array-difference