在PHP中从数组返回唯一值,而不保留副本的第一个副本
SF上有许多线程,用户在其中回答如何返回PHP数组的唯一值。普遍的答案是:在PHP中从数组返回唯一值,而不保留副本的第一个副本,php,arrays,unique,Php,Arrays,Unique,SF上有许多线程,用户在其中回答如何返回PHP数组的唯一值。普遍的答案是: $arrWtihDuplicates=['a','a','a','b','c'] array\u unique($arrWtihDuplicates)//将返回['a','b','c'] 有没有办法不返回a 以下是这种行为可能带来问题的原因: 让我们回到$arrhtihdeplicate。如果我只想从这个数组返回重复的值怎么办?这是行不通的: $arrWtihDuplicates = ['a', 'a', 'a', 'b
$arrWtihDuplicates=['a','a','a','b','c']
array\u unique($arrWtihDuplicates)//将返回['a','b','c']
有没有办法不返回a
以下是这种行为可能带来问题的原因:
让我们回到$arrhtihdeplicate
。如果我只想从这个数组返回重复的值怎么办?这是行不通的:
$arrWtihDuplicates = ['a', 'a', 'a', 'b', 'c'];
$withoutDuplicates = array_unique($arrWithDuplicates);
var_dump(array_diff($arrWtihDuplicates, $withoutDuplicates));
上面将返回一个空数组-两个数组共享相同的值,因此array_diff
看不到它们之间的差异
总之,如何返回没有任何重复项的数组值,以便:
['a','a','b','c']
变成['b','c']
或者反过来说
['a','a','b','c']
变成了['a','a','a']
-这样做了
array_diff(['a','a','a','b','c'],['a','a','a'])
将仅返回真正的uniques-b
和c
在PHP中进行此类计算似乎过于复杂。您可以使用一组PHP函数,如
array\u count\u value
,array\u filter
,&array\u key
,以获得结果
$arr = ['a', 'a', 'a', 'b', 'c'];
$result = array_keys(array_filter(array_count_values($arr),function($v){ return $v==1;}));
print_r($result);//['b','c']
很高兴它帮助了你。