例如
[
['foo' => 1, 'bar' => 2],
['foo' => 1, 'bar' => 3],
['foo' => 2, 'bar' => 4]
]
我想成为
[
['foo' => 1, 'bar' => 2],
['foo' => 2, 'bar' => 4]
]
基于
foo
的重复值。我不介意哪一个条目去,哪个都好。
我可以写一些东西来遍历数组并自己执行这个检查,但我想知道是否有一个内置函数(或它们的组合)可以实现这个结果?
但我想知道是否有内置函数(或组合 他们中的几个)可以达到这个结果
当然是。我的版本是执行以下操作:
创建一个基于键值的子数组,其中创建的键是子数组的第一个键,与
|
(管道)和第一个键的值连接。因为,不能有重复的键,我们在这里使用 array_map
. 实现唯一性
现在,每个键值对都是子数组。所以我们使用
array_merge
合并它们,这使我们能够只保留唯一的值。
由于在数组中实现了键值对子数组,我们使用
foo|1
删除人工制作的键(如foo|2
或array_values
等)。
片段:
<?php
$result = array_values(array_merge(...array_map(fn($v) => [array_key_first($v). '|'. $v[array_key_first($v)] => $v], $d)));
print_r($result);