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

use*_*736 2 php arrays

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

我试着用:

array_unique($array);
Run Code Online (Sandbox Code Playgroud)

但这只会删除重复项,这不是我想要的.

举个例子:

$array =  0 => 1
          1 => 2
          2 => 3
          3 => 4
          4 => 5
          5 => 2
          6 => 3
          7 => 4
          8 => 5
Run Code Online (Sandbox Code Playgroud)

预期产量:

array(
   0=>1
 )
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,只有值1在数组中出现一次,所有其他值在数组中不止一次.所以我只想保留那一个元素.

Riz*_*123 8

这应该适合你:

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

Array (
    [1] => 1
    [2] => 2
    [3] => 2
    [4] => 2
    [5] => 2
//   ?     ?
// Value Amount
)
Run Code Online (Sandbox Code Playgroud)

之后,您可以使用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);

?>
Run Code Online (Sandbox Code Playgroud)

输出:

Array (
    [0] => 1
)
Run Code Online (Sandbox Code Playgroud)