我的数组:
$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> = 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
。
因此,由于相同的键不能存在两次,因此它将使用相同的键(for 0
)用较新的值覆盖以前的值。因此,新数组将仅保留最新(最后)值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句