改变数组顺序的数组的递归差分
Recursive Difference of Arrays with Changed Array Order
我知道这里有很多类似的问题,但我真的认为这个问题与其他问题不同。我有 2 个这样的数组:
数组 1
Array
(
[0] => Array
(
[name] => aaaa
[projectId] => 0
[area] => AreaX
)
[1] => Array
(
[name] => cccc
[projectId] => 2
[area] =>
)
)
数组 2
Array
(
[0] => Array
(
[name] => cccc
[projectId] => 1
[area] =>
)
[1] => Array
(
[name] => aaaa
[projectId] => 0
[area] => AreaX
)
)
我需要的
Array
(
[1] => Array
(
[projectId] => 2
)
)
我阅读并测试了很多来自类似问题的建议,但所有这些 return 整个数组或完全不同的东西。我尝试过的一些相关功能:1, 2, 3, , , 6, 。我意识到主要问题与数组的位置有关。当我重新排列它们时,功能完美地工作(我目前使用数字 3),但我这里的情况不允许这种重组。
您可以使用 array_diff
、array_column
和 array_map
来实现:
$col = "projectId";
$res = array_diff(array_column($a, $col), array_column($b, $col));
$res = array_map(function($id) use ($col) {return [$col => $id];}, $res);
参考:array-diff, array-column, array_map
实例:3v4l
我知道这里有很多类似的问题,但我真的认为这个问题与其他问题不同。我有 2 个这样的数组:
数组 1
Array
(
[0] => Array
(
[name] => aaaa
[projectId] => 0
[area] => AreaX
)
[1] => Array
(
[name] => cccc
[projectId] => 2
[area] =>
)
)
数组 2
Array
(
[0] => Array
(
[name] => cccc
[projectId] => 1
[area] =>
)
[1] => Array
(
[name] => aaaa
[projectId] => 0
[area] => AreaX
)
)
我需要的
Array
(
[1] => Array
(
[projectId] => 2
)
)
我阅读并测试了很多来自类似问题的建议,但所有这些 return 整个数组或完全不同的东西。我尝试过的一些相关功能:1, 2, 3,
您可以使用 array_diff
、array_column
和 array_map
来实现:
$col = "projectId";
$res = array_diff(array_column($a, $col), array_column($b, $col));
$res = array_map(function($id) use ($col) {return [$col => $id];}, $res);
参考:array-diff, array-column, array_map
实例:3v4l