Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中从数组返回唯一值,而不保留副本的第一个副本_Php_Arrays_Unique - Fatal编程技术网

在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

SF上有许多线程,用户在其中回答如何返回PHP数组的唯一值。普遍的答案是:

$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']

很高兴它帮助了你。