代码之家  ›  专栏  ›  技术社区  ›  Tom

计数具有给定值的数组中的值数

  •  21
  • Tom  · 技术社区  · 15 年前

    假设我有一个这样的数组:

    $array = array('', '', 'other', '', 'other');
    

    如何用给定的值(在示例空白中)计算数字?

    有效地做到这一点?(大约12个数组,每个数组包含数百个元素) 此示例超时(超过30秒):

    function without($array) {
        $counter = 0;
        for($i = 0, $e = count($array); $i < $e; $i++) {
            if(empty($array[$i])) {
                $counter += 1;
            }
        }
        return $counter;
    }
    

    在这种情况下,空白元素的数目是3。

    8 回复  |  直到 8 年前
        1
  •  34
  •   Cellfish    15 年前

    如何使用 array_count _values 得到一个数组,所有的东西都为你计数?

        2
  •  27
  •   Sampson    12 年前

    只是个主意,你可以用 array_keys( $myArray, "" ) 使用指定搜索值的可选第二个参数。然后计算结果。

    $myArray = array( "","","other","","other" );
    $length  = count( array_keys( $myArray, "" ));
    
        3
  •  6
  •   Steve Tauber    12 年前

    我不知道这是否会更快,但这是值得尝试的:

    $counter = 0;
    foreach($array as $value)
    {
      if($value === '')
        $counter++;
    }
    echo $counter;
    
        4
  •  3
  •   Steve    15 年前

    你也可以试试 array_reduce ,函数只计算您感兴趣的值。如

    function is_empty( $v, $w )
    { return empty( $w ) ? ($v + 1) : $v; }
    
    array_reduce( $array, 'is_empty', 0 );
    

    一些基准测试可能会告诉您这是否比数组的计数值()更快。

        5
  •  2
  •   Bhushan Rana    9 年前

    我们使用array_filter函数找出数组中的值的数目

    $array=array('','','other','','other');
    $filled_array=array_filter($array);// will return only filled values
     $count=count($filled_array);
    echo $count;// returns array count
    
        6
  •  1
  •   J. Chomel    8 年前

    一般只用于计数空白。 这取决于所需的用例和速度。就我个人而言,我喜欢做一件事。

    尽管与所选的响应类似,但是您仍然需要一行代码来将所需的数据提取到另一个变量。

    $r = count($x) - count(array_filter($x));
    
        7
  •  -2
  •   Disposer    10 年前
    function arrayvaluecount($array) {
    
        $counter = 0;
        foreach($array as $val){
    
            list($v)=$val;
            if($v){
    
            $counter =$counter+1;
            }
    
        }
    return $counter;
    }
    
        8
  •  -2
  •   Robert Mars_win    9 年前
    function countarray($array)
    {        $count=count($array);         
             return $count;        
    }        
    $test=$array = array('', '', 'other', '', 'other');        
    echo countarray($test);