[英]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.