具有多维数组的array_diff()使用array_diff(),我可以比较和删除相似的项目,但是如果我有以下数组怎么办?数组1Array(
[0] => Array
(
[ITEM] => 1
)
[1] => Array
(
[ITEM] => 2
)
[2] => Array
(
[ITEM] => 3
))ARRAY2Array(
[0] => Array
(
[ITEM] => 2
)
[1] => Array
(
[ITEM] => 3
)
[2] => Array
(
[ITEM] => 1
)
[3] => Array
(
[ITEM] => 4
))我想过滤掉类似的物品;结果应该返回4.如何重新排列数组以便可以使用array_diff()?
3 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
您可以使用定义自定义比较功能array_udiff()
。
function udiffCompare($a, $b){ return $a['ITEM'] - $b['ITEM'];}$arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');print_r($arrdiff);
输出:
Array ( [3] => Array ( [ITEM] => 4 ) )
这使用并保留了数组的现有结构,我认为这是您想要的。
繁华开满天机
TA贡献1816条经验 获得超4个赞
另一个有趣的json_encode
技巧(如果您需要“原始”比较第一级数组中的一些复杂值,可能会很有用):
// Compare all values by a json_encode$diff = array_diff(array_map('json_encode', $array1), array_map('json_encode', $array2));// Json decode the result$diff = array_map('json_decode', $diff);
添加回答
举报
0/150
提交
取消