Comment faire pour exécuter array_filter de façon récursive dans un tableau PHP?
Donné le tableau suivant $mm
Array
(
[147] => Array
(
[pts_m] =>
[pts_mreg] => 1
[pts_cg] => 1
)
[158] => Array
(
[pts_m] =>
[pts_mreg] =>
[pts_cg] => 0
)
[159] => Array
(
[pts_m] =>
[pts_mreg] => 1
[pts_cg] => 1
)
)
Quand je lance count(array_filter($mm))
- je obtenir 3
comme résultat, car il n'est pas récursive.
count(array_filter($mm), COUNT_RECURSIVE)
permettra aussi de ne pas le faire parce que j'ai réellement besoin pour exécuter le array_filter
de manière récursive, puis à compter de son résultat.
Donc ma question est: comment puis-je exécuter de manière récursive array_filter($mm)
dans ce cas?
Mon résultat escompté serait ici 4
.
Veuillez noter que je n'utilise aucune de rappel afin que je puisse exclure les faux, nulle et vide.
- Vous êtes tout simplement en essayant de compter les éléments du tableau qui ont une valeur?
- c'est correct, mais pas 0
Vous devez vous connecter pour publier un commentaire.
Devrait fonctionner
ou peut-être
Il y a certainement beaucoup plus de solutions possibles. Si vous souhaitez utiliser
array_filter()
(sans rappel), rappelez-vous, qu'il traite0
commefalse
trop, et donc supprimer tout0
-valeur du tableau.Si vous utilisez PHP dans une pré-version 5.3, je voudrais utiliser une
foreach
-boucleMise à jour
Concernant le commentaire ci-dessous:
Quand ce n'est vraiment que, ce que vous voulez, la solution est très simple aussi.
Mais maintenant, je ne sais pas, comment interpréter
De toute façon, son court maintenant 🙂
Le tableau qui en résulte ressemble à
5
." est tout à fait trompeur alors et après la suppression de toutefalse
-évalué la valeurcount($array)
toujours pas de retour0
.5
". Il compte les éléments du tableau et un tableau est un élément et ne seront donc comptabilisés comme1
(je n'ai pas voulu ce commentaire pour être un idiot "voulez corriger ma faute de frappe"..)De la PHP
array_filter
de la documentation:array_filter
fait normalement. Si vous regardez dans la fonction, il appellearray_filter
sauf si c'est la valeur actuelle est un tableau à quel point il appelle laarray_filter_recursive
fonction.Une meilleure alternative
Une mise en œuvre qui a toujours travaillé pour moi est celui-ci:
J'ai remarqué que quelqu'un avait créé une fonction similaire sauf que celui-ci présente, à mon avis, quelques avantages:
Repères
J'espère que cela aide.
Cette fonction de manière efficace s'applique filter_recursive avec un rappel
Et que vous souhaitez l'utiliser de cette façon:
Cela peut aider quelqu'un
true
? Dans ce cas, vous êtes en claquant la valeur d'origine detrue
J'ai besoin d'un tableau de filtre de fonction récursive, qui serait marcher à travers tous les nœuds (y compris les tableaux, de sorte que nous avons la possibilité de jeter des tableaux entiers), et donc je suis venu avec cette:
Voir plus d'exemples ici: https://github.com/lingtalfi/Bat/blob/master/ArrayTool.md#filterrecursive