vacio - ¿Cómo contar entradas no vacías en una matriz de PHP?
php length array (3)
Aquí hay una función de cálculo simple:
function non_empty(array $a) {
return array_sum(array_map(function($b) {return empty($b) ? 0 : 1;}, $a));
}
Esto conservará los índices de matriz si su función de manejo de formularios los necesita, como cuando asocia la tercera entrada en nombre al tercer valor de otro conjunto de entrada, y hay entradas vacías entre ellos.
Considerar:
[name] => Array ( [1] => name#1
[2] => name#2
[3] => name#3
[4] => name#4
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
)
$name = $_POST[''name'']
Quiero que el resultado sea 4
.
count ($name) = 9
count (isset($name)) = 1
count (!empty($name)) = 1
Pensaría que el último lograría lo que necesito, pero no lo es (las entradas vacías son de las entradas sin completar en el formulario).
Puede usar array_filter para mantener solo los valores que no están vacíos en la matriz, como esto:
array_filter($array);
O si tu función de filtro es más compleja:
array_filter($array, function($x) { return !empty($x); });
# function(){} only works in in php >5.3, otherwise use create_function
Entonces, para contar solo no vacio:
count(array_filter($array));
count(array_filter($name));