【问题标题】:count the elements in array except of specific element计算数组中除特定元素外的元素
【发布时间】:2018-04-16 06:19:22
【问题描述】:

例如我有一个像这样的数组[-1,-1,-1,-1,-1,-1,2.5,-1,-1,8.3] 我想计算除-1 之外的不是-1 的元素。 php中有什么函数可以得到这个吗?我认为的一种方法是

Count the total array - count of the -1 in the array

我们怎样才能做到这一点。

P.S : 请给我评论为什么这个问题应该投反对票。

【问题讨论】:

  • 使用count()array_filter();或使用 array_count_values() 计算 -1 值
  • 有没有直接的办法?
  • 你想要多直接?带有 array_filter() 的 count() 只是两个可以嵌套的函数调用 $result = count(array_filter($myArray), function($value) { return $value != -1; });.... 抱歉 PHP 没有提供 countExcludingValuesOfMinusOne() 函数,因此您可以将其设为单个函数调用
  • 是的,我理解,但 php 提供了类似 in_array 函数,这就是原因。我认为也有一个功能
  • 是的,in_array() 会告诉您数组中是否存在 -1 的值.... 它不会为您计算它们

标签: php arrays


【解决方案1】:

@MarkBaker said 一样,PHP 并没有一个方便的函数来解决每个问题,但是,您可以像这样自己制作一个:

$arr = [-1,-1,-1,-1,-1,-1,2.5,-1,-1,8.3];

function countExcludingValuesOfNegativeOne ($arr) {
    return count($arr) - array_count_values(array_map('strval', $arr))['-1'];
}

echo countExcludingValuesOfNegativeOne($arr); // Outputs `2`.

它只是计算整个数组,然后减去数组中负 1 的数量。因为在使用array_count_values 时,如果数组中的任何元素不是字符串1,PHP 会抛出错误,所以我刚刚使用array_map('strval', $arr) 将数组的所有元素转换为字符串2

【讨论】:

    【解决方案2】:

    您可以使用 for 循环计数器跳过特定数字。

    function skip_counter($array,$skip){
        $counter = 0;
        foreach ($array as $value) {
            if ($value != $skip) $counter++;
        }
    return $counter;
    }
    

    然后你打电话给skip_counter($your_list, $number_to_be_skipped);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 1970-01-01
      相关资源
      最近更新 更多