Considérer:
[name] => Array ( [1] => name#1
[2] => name#2
[3] => name#3
[4] => name#4
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
)
$name = $_POST['name']
Je veux que le résultat soit 4
.
count ($name) = 9
count (isset($name)) = 1
count (!empty($name)) = 1
Je pense que le dernier accomplirait ce dont j'ai besoin, mais ce n'est pas le cas (les entrées vides proviennent d'entrées non remplies sur le formulaire).
Vous pouvez utiliser array_filter pour ne conserver que les valeurs non vides dans le tableau, comme ceci:
array_filter($array);
Ou si votre fonction de filtrage est plus complexe:
array_filter($array, function($x) { return !empty($x); });
# function(){} only works in in php >5.3, otherwise use create_function
Donc, pour ne compter que les non vides:
count(array_filter($array));
count(array_filter($name));
Voici une fonction de calcul simple:
function non_empty(array $a) {
return array_sum(array_map(function($b) {return empty($b) ? 0 : 1;}, $a));
}
Cela préservera les index de tableau si votre fonction de gestion de formulaire en a besoin, comme lorsque vous associez la troisième entrée de nom à la troisième valeur d'un autre ensemble d'entrées et qu'il y a des entrées vides entre elles.