Dnegel666
mardi 5 juillet 2005 à 17:18
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
mardi 5 juillet 2005 à 17:22
function countItem($tab, $search) {
$found = 0 ;
foreach($tab as $value) if ($value==$search) ++$found ;
return $found ;
}
Dnegel666
mardi 5 juillet 2005 à 17:34
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 !
Ganf
mardi 5 juillet 2005 à 17:40
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
mardi 5 juillet 2005 à 17:45
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 :
CODE
SELECT 'champ1' WHERE 'champ2' LIKE '%cdef%';
Ca récuperera "abcdefg", 'abcdef', 'cdefgd' ...
Dnegel666
mardi 5 juillet 2005 à 18:00
Ganf, ta 2ème solution été bonne, merci.
et enroc, non, cela ne provient pas d'une requête.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez
cliquer ici.