我如何获得所有数组元素,其中值只在数组中出现一次


How can I get all array elements, where the value only occurs once in the array?

我试图获得所有数组元素,其中值只在数组中出现一次。

我尝试使用:

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()只获取值,这在您的数组中出现一次。意思是:

<>以前阵列([1] => 1[2] => 2[3] => 2[4] => 2[5] => 2)之前

最后简单地使用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的键数组。希望这对你有所帮助。