繁体   English   中英

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

[英]Count number of values in array with a given value

说我有一个像这样的数组:

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

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

而且有效吗? (大约十二个数组,每个数组包含数百个元素)此示例超时(超过30秒):

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

在这种情况下,空白元素的数量为3。

如何使用array_count _values来获得一个为您计算一切的数组?

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

$myArray = array( "","","other","","other" );
$length  = count( array_keys( $myArray, "" ));

我不知道这样会不会更快,但是可以尝试一下:

$counter = 0;
foreach($array as $value)
{
  if($value === '')
    $counter++;
}
echo $counter;

您也可以尝试使用array_reduce函数,该函数只计算您感兴趣的值。例如

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

array_reduce( $array, 'is_empty', 0 );

一些基准测试可能会告诉您这是否比array_count_values()更快

我们使用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

通常仅用于计数空白。 确实取决于用例和所需的速度。 我个人喜欢一一做事。

就像选择的响应一样,但是您仍然需要一行来将所需的数据提取到另一个变量中。

$r = count($x) - count(array_filter($x));
function arrayvaluecount($array) {

    $counter = 0;
    foreach($array as $val){

        list($v)=$val;
        if($v){

        $counter =$counter+1;
        }

    }
return $counter;
}
function countarray($array)
{        $count=count($array);         
         return $count;        
}        
$test=$array = array('', '', 'other', '', 'other');        
echo countarray($test);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM