My array:
$arr = [['abc', 'a'],['xyz', 'f'],['abc', 'x']];
我需要删除任何重复的第一个值,例如。上面有两个ABC值,由于第二个值不同,array_unique不起作用:
$arr = array_unique($arr, SORT_REGULAR);
是否有一种方法可以根据第一个值只获得唯一的值。我不能改变上面的结构。
期望的输出是:
$arr = [['abc', 'a'],['xyz', 'f']];
array_combine() &Array_column()可以提供帮助。但是它会改变嵌套数组的顺序,并且只保留重复项的最后一个值。
$arr = [['abc', 'a'],['xyz', 'f'],['abc', 'x']];
$temp = array_combine(array_column($arr, 0), $arr);
array_column
在旧版本中不可用。(可以在 (PHP 5> =发送的,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
)。因此,新数组将只保存最新(最后)的值。