我试图获得所有数组元素,其中值只在数组中出现一次。
我尝试使用:
array_unique($array);
但是这只删除了重复项,这不是我想要的。
例如:
$array = 0 => 1
1 => 2
2 => 3
3 => 4
4 => 5
5 => 2
6 => 3
7 => 4
8 => 5
预期输出:array(
0=>1
)
正如您所看到的,只有值1在数组中出现了一次,所有其他值都在数组中出现了不止一次。所以我只想保留这一个元素
这应该可以为您工作:
首先使用array_count_values()
计算每个值在数组中出现的次数。这将返回如下内容:
Array (
[1] => 1
[2] => 2
[3] => 2
[4] => 2
[5] => 2
// ↑ ↑
// Value Amount
)
之后,您可以使用array_filter()
只获取值,这在您的数组中出现一次。意思是:
最后简单地使用array_keys()
从原始数组中获取值
<?php
$arr = [1,2,3,4,5,2,3,4,5];
$result = array_keys(array_filter(array_count_values($arr), function($v){
return $v == 1;
}));
print_r($result);
?>
输出:Array (
[0] => 1
)
您可以使用array_count_values来获取每个值在数组中存在的次数。您可以使用它通过查看返回数组中的值来获取只出现一次的所有值。
如果你已经有一个数组,并且它在上面描述的结构中,你应该能够只使用array_search(1, $array),它会给你数组的键值为1。或者,如果您希望有多个值为1的键,您可以使用array_keys($array, 1),它将返回一个值为1的键数组。希望这对你有所帮助。