如何获取所有数组元素,其中值仅在数组中出现一次?

时间:2015-09-01 15:10:53

标签: php arrays

我正在尝试获取所有数组元素,其中值仅在数组中出现一次。

我试图使用:

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在数组中出现一次,所有其他值在数组中都不止一次。所以我只想保留那一个元素。

3 个答案:

答案 0 :(得分:8)

这应该适合你:

首先使用array_count_values()计算数组中每个值的次数。这将返回如下内容:

Array (
    [1] => 1
    [2] => 2
    [3] => 2
    [4] => 2
    [5] => 2
//   ↑     ↑
// Value Amount
)

之后,您可以使用array_filter()仅获取值,这些值在数组中出现一次。的意思是:

Array (
    [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
)

答案 1 :(得分:1)

您可以使用array_count_values来获取数组中每个值的存在次数。您可以使用此方法通过查看返回数组中的值来获取仅出现一次的所有值。

答案 2 :(得分:0)

如果你已经有一个数组并且它在上面描述的结构中,你应该只能使用array_search(1,$ array),它将为你提供值为1的数组的键。或者如果你期望有多个值为1的键,你可以使用array_keys($ array,1),它将返回一个值为1的键数组。希望这会有所帮助。