关于计算二维数组的差集 [ 技术分享 ]
大家知道,array_diff()只支持一维数组的计算,二维数组如何计算差集呢?
例如这两个数组:
$array1 = [
0 => [
'id' => 1,
'name' => 'abc',
]
];
$array2 = [
0 => [
'id' => 1,
'name' => 'abc',
],
1 => [
'id' => 2,
'name' => 'test',
]
];
我的思路是降低维度(从网上搜索的大部分思路也是降低维度),然后计算。
在这里我使用了一个笨方法,转换为json字符串:
function my_array_diff_multi($arr1, $arr2)
{
$tmp1 = [];
foreach ($arr1 as $a1) {
$tmp1[] = json_encode($a1);
}
$tmp2 = [];
foreach ($arr2 as $a2) {
$tmp2[] = json_encode($a2);
}
$result = [];
foreach (array_diff($tmp1, $tmp2) as $tmp3) {
$result[] = json_decode($tmp3, true);
}
}
print_r(my_array_diff_multi($array1, $array2))
// 输出
// Array ( [0] => Array ( [id] => 2 [name] => test ) )
共 0 条回复
没有找到数据。
qhdtc5
注册时间:2015-12-04
最后登录:2017-05-12
在线时长:2小时39分
最后登录:2017-05-12
在线时长:2小时39分
- 粉丝2
- 金钱105
- 威望0
- 积分125