Version complète: sur le forum Webmaster Hub : encore pb de tableau...
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Dnegel666
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 biggrin.gif
Ganf
function countItem($tab, $search) {
$found = 0 ;
foreach($tab as $value) if ($value==$search) ++$found ;
return $found ;
}
Dnegel666
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
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
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
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.