Php 使用给定值计算数组中的值数

Php 使用给定值计算数组中的值数,php,arrays,count,Php,Arrays,Count,假设我有这样一个数组: $array = array('', '', 'other', '', 'other'); 如何使用给定值计算数字(示例中为空) 而且效率高吗?(大约12个阵列,每个阵列包含数百个元素) 此示例超时(超过30秒): 不带($array)的函数{ $counter=0; 对于($i=0,$e=count($array);$i

假设我有这样一个数组:

$array = array('', '', 'other', '', 'other');
如何使用给定值计算数字(示例中为空)

而且效率高吗?(大约12个阵列,每个阵列包含数百个元素) 此示例超时(超过30秒):

不带($array)的函数{
$counter=0;
对于($i=0,$e=count($array);$i<$e;$i++){
if(空($array[$i])){
$counter+=1;
}
}
返回$count;
}

在本例中,空白元素的数量为3。

这只是一个想法,您可以使用指定搜索值的可选第二个参数使用
数组\u键($myArray,“”)
。然后计算结果

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

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

$counter = 0;
foreach($array as $value)
{
  if($value === '')
    $counter++;
}
echo $counter;
使用获取一个数组,该数组中的所有内容都已计算完毕,如何?

您也可以尝试使用一个函数,该函数只计算您感兴趣的值。乙二醇

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

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

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

我们使用数组过滤器函数来查找数组中的值数

$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));

Cellfish:array_count_值可以工作,但通常需要1-2秒才能执行的脚本几乎需要20秒!Johnathan:数组_键不适用于这个特定的函数。史蒂夫:array_reduce也能工作,但速度不如我想象的快。甘菊:只需将$value==''更改为空($value),这是最快的方法。函数不带($array){$count=0;foreach($array as$value){if(empty($value)){$count++;}}返回$count;}这是一个很好的选择,特别是在处理布尔值时。@SteveTauber或数组作为搜索值:)您能用英语解释一下您的代码吗?请向OP和未来的读者解释一下您的代码。$array=array('','other','','','other')$填充的数组=数组过滤器($array);//将只返回填充值$count=count($filled\u数组);echo$count;//返回数组计数或使用回调:计数(数组_过滤器($x,函数($v){return'==$v;}))
array_count_values()
如果计数为零,则不可靠,因为只有找到的值才成为键
$array=array('','','other','','other');
$filled_array=array_filter($array);// will return only filled values
 $count=count($filled_array);
echo $count;// returns array count
function countarray($array)
{        $count=count($array);         
         return $count;        
}        
$test=$array = array('', '', 'other', '', 'other');        
echo countarray($test);
$r = count($x) - count(array_filter($x));