【问题标题】:How can I get all array elements, where the value only occurs once in the array?如何获取所有数组元素,其中值仅在数组中出现一次?
【发布时间】:2015-09-01 15:10:52
【问题描述】:

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

我尝试使用:

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

【问题讨论】:

标签: php arrays


【解决方案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
)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 他正在寻找只出现一次的数组值。这恰好是值1。他不是字面意思在寻找1的值。
      • 好吧,我明白了,我错过了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 2020-10-09
      • 2010-11-06
      • 2020-10-13
      • 2019-04-29
      相关资源
      最近更新 更多