una - suma de matrices en php
Contar el número de valores en la matriz con un valor dado (8)
¿Qué le parece usar el array_count _values para obtener una matriz con todo lo contado para usted?
Digamos que tengo una matriz como esta:
$array = array('''', '''', ''other'', '''', ''other'');
¿Cómo puedo contar el número con un valor dado (en el ejemplo en blanco)?
Y hacerlo de manera eficiente? (para aproximadamente una docena de matrices con cientos de elementos cada uno) Este ejemplo expira (más de 30 segundos):
function without($array) {
$counter = 0;
for($i = 0, $e = count($array); $i < $e; $i++) {
if(empty($array[$i])) {
$counter += 1;
}
}
return $counter;
}
En este caso, la cantidad de elementos en blanco es 3.
Generalmente para contar espacios en blanco solamente. Realmente depende del caso de uso y la velocidad necesaria. Personalmente, me gusta hacer cosas en una línea.
Sin embargo, al igual que la respuesta elegida. Sin embargo, todavía necesita una línea para extraer los datos necesarios a otra variable.
$r = count($x) - count(array_filter($x));
No sé si esto sería más rápido, pero es algo que debes intentar:
$counter = 0;
foreach($array as $value)
{
if($value === '''')
$counter++;
}
echo $counter;
Solo una idea, podría usar array_keys( $myArray, "" )
usando el segundo parámetro opcional que especifica un valor de búsqueda. Luego cuente el resultado.
$myArray = array( "","","other","","other" );
$length = count( array_keys( $myArray, "" ));
También puede probar array_reduce , con una función que simplemente contará el valor que le interesa. Por ejemplo,
function is_empty( $v, $w )
{ return empty( $w ) ? ($v + 1) : $v; }
array_reduce( $array, ''is_empty'', 0 );
Algunos benchmarking podrían decirle si esto es más rápido que array_count_values ()
Utilizamos la función array_filter para averiguar el número de valores en el conjunto
$array=array('''','''',''other'','''',''other'');
$filled_array=array_filter($array);// will return only filled values
$count=count($filled_array);
echo $count;// returns array count
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);