Dnegel666 Posté 5 Juillet 2005 Posté 5 Juillet 2005 Bonjour, J'ai un tableau du style Array(0 -> "abcdef", 1 -> "bcdefg", 2-> "cdefgh"...) en gros, je voudrais savoir s'il est possible de savoir combien de fois se trouve la chaine "bcdef" dans ce tableau. Là, elle est présente 2 fois... (dans 0 et dans 1), dans 2 sections et dans "un mot". Merci
Ganf Posté 5 Juillet 2005 Posté 5 Juillet 2005 function countItem($tab, $search) { $found = 0 ; foreach($tab as $value) if ($value==$search) ++$found ; return $found ; }
Dnegel666 Posté 5 Juillet 2005 Auteur Posté 5 Juillet 2005 (modifié) Oui, mais non car ça, c'est valide seulement si $value est strictement = à $search, hors, moi, elle est dans un mot... et si je me sert d'ergi(), il ne me dira rien de plus que TRUE s'il y a 1 $value, il faudrait faire une boucle, mais il faudrait un paramètre de limitation, et je ne vois pa lequel ! Modifié 5 Juillet 2005 par Dnegel666
Ganf Posté 5 Juillet 2005 Posté 5 Juillet 2005 Soit je n'ai pas compris soit tu n'as pas cherché très loin à partir de ce que je t'ai donné. Si tu veux compter comme 2 quand une chaîne apparait deux fois dans le même item de tableau : function countItem($tab, $search) { $found = 0 ; foreach($tab as $value) $found += substr_count($value,$search) ; return $found ; } Si tu ne veux qu'une occurence par item : function countItem($tab, $search) { $found = 0 ; foreach($tab as $value) if (strpos($value,$search)!==FALSE) ++$found ; return $found ; }
enroc Posté 5 Juillet 2005 Posté 5 Juillet 2005 http://php.net/array pour les fonctions sur les tableaux http://de2.php.net/regex pour les expressions régulières POSIX http://php.net/pcre pour les expressions régulières compatible Perl De plus si ce tableau provient d'une requête SQL, fais plutôt : SELECT 'champ1' WHERE 'champ2' LIKE '%cdef%'; Ca récuperera "abcdefg", 'abcdef', 'cdefgd' ...
Dnegel666 Posté 5 Juillet 2005 Auteur Posté 5 Juillet 2005 Ganf, ta 2ème solution été bonne, merci. et enroc, non, cela ne provient pas d'une requête.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant