我需要一个功能来查找“权利”中的变化。同一个user_id的密钥
在我的例子中,我有2个数组:
$a = array(
array(
'user_id' => '367',
'right' => 'RW',
),
array(
'user_id' => '48',
'right' => 'RWD',
)
);
$b = array(
array(
'user_id' => '57',
'right' => 'RWD',
),
array(
'user_id' => '367',
'right' => 'RWD',
)
);
$result = array_udiff($a, $b, 'myFunc');
$result2 = array_udiff($b, $a, 'myFunc');
现在我必须收到:
$result = array(
array(
'user_id' => '367',
'right' => 'RW',
)
)
$result2 = array(
array(
'user_id' => '367',
'right' => 'RWD',
)
)
我尝试了很多,但我没有得到正确的功能。
任何人都可以帮助我。
编辑:
我尝试用:
function myFunc($a, $b){
if($a['user_id'] == $b['user_id']){
return strcmp($a['right'], $b['right']);
}
return 0;
}
输出为空。最好用foreach来解释:
function myFunc($a, $b){
$output = array();
foreach($a as $_a){
foreach($b as $_b){
if($_a['user_id'] == $_b['user_id']){
if($_a['right'] != $_b['right']){
$output[] = $_a;
break;
}
}
}
}
return $output;
}
答案 0 :(得分:1)
function myFunc($a, $b)
{
if($a['right'] < $b['right'])
return -1;
else if($a['right'] > $b['right'])
return 1;
return 0;
}
你是说这个吗?