我的阵列:
$arr = [['abc', 'a'],['xyz', 'f'],['abc', 'x']];
我需要删除任何重复的第一个值,例如。上面有两个abc值,array_unique将不起作用,因为第二个值不同:
$arr = array_unique($arr, SORT_REGULAR);
有没有办法只根据第一个值获取唯一值。我无法改变上述结构。
所需的输出是:
$arr = [['abc', 'a'],['xyz', 'f']];
答案 0 :(得分:5)
array_combine()& array_column()可以提供帮助。但它会改变嵌套数组的顺序,并且只保留重复项的最后一个值。
$arr = [['abc', 'a'],['xyz', 'f'],['abc', 'x']];
$temp = array_combine(array_column($arr, 0), $arr);
array_column
不适用于旧版本。 (提供(PHP 5> = 5.5.0,PHP 7))
<强>输出强>
array(2) {
["abc"]=>
array(2) {
[0]=>
string(3) "abc"
[1]=>
string(1) "x"
}
["xyz"]=>
array(2) {
[0]=>
string(3) "xyz"
[1]=>
string(1) "f"
}
}
array_column 将返回一个数组,其中包含来自0
索引的子数组的所有值。
array_combine 会将子数组分配给array_column
返回的值。
因此,相同的密钥不能存在两次,它将使用相同的密钥(对于0
)用较新的值覆盖以前的值。因此,新数组将仅保留最新(最后)值。