数组唯一,仅基于第一个值


Array Unique based upon first value only?

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)。因此,新数组将只保存最新(最后)的值。