J'utilise un petit peu PHP pour mon site (PHP 5, Windows XP Home, Wamp 5
(1.4.4)) et je cherche une fonction simple équivalente à :
array_keys($array,"Toto");
qui retourne les numéros d'indice du tableau $array dont la valeur est
strictement Toto.
Ce que je voudrais faire (simplement), c'est retourner les numéros
d'indice du tableau $array si leur valeur *contient* Toto, n'importe où.
J'ai cherché, sans doute mal, mais je n'ai pas trouvé de fonction toute
faite.
--
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant
Technologie aéronautique : http://aviatechno.free.fr
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Dominique Ottello
Dominique Ottello écrivait :
J'utilise un petit peu PHP pour mon site (PHP 5, Windows XP Home, Wamp 5 (1.4.4)) et je cherche une fonction simple équivalente à :
array_keys($array,"Toto");
qui retourne les numéros d'indice du tableau $array dont la valeur est strictement Toto.
Ce que je voudrais faire (simplement), c'est retourner les numéros d'indice du tableau $array si leur valeur *contient* Toto, n'importe où.
Le simple fait de poser une question m'a incité à chercher plus profondément et, si je n'ai pas trouvé de fonction toute faite qui me convienne : array_filter() et preg_grep() retournent les valeurs et non les numéros des clés comme array_keys(), j'ai écrit une petite fonction qui le fait comme il me convient et que j'ai nommé, par analogie array_keys_grep()
function array_keys_grep($array,$string) { foreach ($array as $key => $var) { if (stristr($var,$string)) $lst[]=$key; } return($lst); }
Peut-on faire plus simple ? Ayez l'obligeance de me parler avec douceur, sans élever le ton et sans me contredire en aucune manière. Chez les gens de mon âge, le bruit et la contradiction provoquent des hausses brusque de tension, de l'hyperacidité gastrique, des troubles cardiaques, et je deviens très rapidement désagréable.
J'utilise un petit peu PHP pour mon site (PHP 5, Windows XP Home, Wamp 5
(1.4.4)) et je cherche une fonction simple équivalente à :
array_keys($array,"Toto");
qui retourne les numéros d'indice du tableau $array dont la valeur est
strictement Toto.
Ce que je voudrais faire (simplement), c'est retourner les numéros
d'indice du tableau $array si leur valeur *contient* Toto, n'importe où.
Le simple fait de poser une question m'a incité à chercher plus
profondément et, si je n'ai pas trouvé de fonction toute faite qui me
convienne : array_filter() et preg_grep() retournent les valeurs et non
les numéros des clés comme array_keys(), j'ai écrit une petite fonction
qui le fait comme il me convient et que j'ai nommé, par analogie
array_keys_grep()
function array_keys_grep($array,$string) {
foreach ($array as $key => $var) {
if (stristr($var,$string)) $lst[]=$key;
}
return($lst);
}
Peut-on faire plus simple ?
Ayez l'obligeance de me parler avec douceur, sans élever le ton et sans me
contredire en aucune manière. Chez les gens de mon âge, le bruit et la
contradiction provoquent des hausses brusque de tension, de l'hyperacidité
gastrique, des troubles cardiaques, et je deviens très rapidement désagréable.
J'utilise un petit peu PHP pour mon site (PHP 5, Windows XP Home, Wamp 5 (1.4.4)) et je cherche une fonction simple équivalente à :
array_keys($array,"Toto");
qui retourne les numéros d'indice du tableau $array dont la valeur est strictement Toto.
Ce que je voudrais faire (simplement), c'est retourner les numéros d'indice du tableau $array si leur valeur *contient* Toto, n'importe où.
Le simple fait de poser une question m'a incité à chercher plus profondément et, si je n'ai pas trouvé de fonction toute faite qui me convienne : array_filter() et preg_grep() retournent les valeurs et non les numéros des clés comme array_keys(), j'ai écrit une petite fonction qui le fait comme il me convient et que j'ai nommé, par analogie array_keys_grep()
function array_keys_grep($array,$string) { foreach ($array as $key => $var) { if (stristr($var,$string)) $lst[]=$key; } return($lst); }
Peut-on faire plus simple ? Ayez l'obligeance de me parler avec douceur, sans élever le ton et sans me contredire en aucune manière. Chez les gens de mon âge, le bruit et la contradiction provoquent des hausses brusque de tension, de l'hyperacidité gastrique, des troubles cardiaques, et je deviens très rapidement désagréable.
Clifden
Le simple fait de poser une question m'a incité à chercher plus profondément et, si je n'ai pas trouvé de fonction toute faite qui me convienne : array_filter() et preg_grep() retournent les valeurs et non les numéros des clés comme array_keys(), j'ai écrit une petite fonction qui le fait comme il me convient et que j'ai nommé, par analogie array_keys_grep()
(...)
Peut-on faire plus simple ?
En fait, tu avais déjà presque la solution:
function array_keys_grep($array,$string) { return preg_grep('/'.$filter.'/',array_keys($array)); }
Le simple fait de poser une question m'a incité à chercher plus
profondément et, si je n'ai pas trouvé de fonction toute faite qui me
convienne : array_filter() et preg_grep() retournent les valeurs et non
les numéros des clés comme array_keys(), j'ai écrit une petite fonction
qui le fait comme il me convient et que j'ai nommé, par analogie
array_keys_grep()
(...)
Peut-on faire plus simple ?
En fait, tu avais déjà presque la solution:
function array_keys_grep($array,$string) {
return preg_grep('/'.$filter.'/',array_keys($array));
}
Le simple fait de poser une question m'a incité à chercher plus profondément et, si je n'ai pas trouvé de fonction toute faite qui me convienne : array_filter() et preg_grep() retournent les valeurs et non les numéros des clés comme array_keys(), j'ai écrit une petite fonction qui le fait comme il me convient et que j'ai nommé, par analogie array_keys_grep()
(...)
Peut-on faire plus simple ?
En fait, tu avais déjà presque la solution:
function array_keys_grep($array,$string) { return preg_grep('/'.$filter.'/',array_keys($array)); }
Dominique Ottello
Clifden écrivait :
En fait, tu avais déjà presque la solution:
function array_keys_grep($array,$string) { return preg_grep('/'.$filter.'/',array_keys($array)); }
($filter doit être remplacé par $string)
À priori, ça ne fonctionne pas car array_keys($array) retourne les clés (et non la valeur) ; donc preg_grep ne trouvera pas la chaîne recherchée dans les clés. -- Un ordinateur résout des problèmes que nous n'aurions pas sans lui Technique aéronautique : http://aviatechno.free.fr Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr
Clifden <clifdenn@gmail.com> écrivait :
En fait, tu avais déjà presque la solution:
function array_keys_grep($array,$string) {
return preg_grep('/'.$filter.'/',array_keys($array));
}
($filter doit être remplacé par $string)
À priori, ça ne fonctionne pas car array_keys($array) retourne les clés
(et non la valeur) ; donc preg_grep ne trouvera pas la chaîne recherchée
dans les clés.
--
Un ordinateur résout des problèmes que nous n'aurions pas sans lui
Technique aéronautique : http://aviatechno.free.fr
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr
function array_keys_grep($array,$string) { return preg_grep('/'.$filter.'/',array_keys($array)); }
($filter doit être remplacé par $string)
À priori, ça ne fonctionne pas car array_keys($array) retourne les clés (et non la valeur) ; donc preg_grep ne trouvera pas la chaîne recherchée dans les clés. -- Un ordinateur résout des problèmes que nous n'aurions pas sans lui Technique aéronautique : http://aviatechno.free.fr Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr
Dominique Ottello
Clifden écrivait :
function array_keys_grep($array,$string) { return preg_grep('/'.$filter.'/',array_keys($array)); }
Ça fonctionne mieux comme ça :
function array_keys_grep($array,$string) { return array_keys(preg_grep('/'.$string.'/',$array)); } -- Pourquoi donc mes angoisses se transforment-elles en douleur ? Ou bien sont-ce mes douleurs qui créent l'angoisse ? Mais plus j'angoisse et plus j'ai mal et plus j'ai mal et plus j'angoisse ! Surtout que maintenant, j'angoisse d'avoir peur et du coup, je ne sais plus pourquoi j'ai mal !.... Et ça m'angoisse !!
Clifden <clifdenn@gmail.com> écrivait :
function array_keys_grep($array,$string) {
return preg_grep('/'.$filter.'/',array_keys($array));
}
Ça fonctionne mieux comme ça :
function array_keys_grep($array,$string) {
return array_keys(preg_grep('/'.$string.'/',$array));
}
--
Pourquoi donc mes angoisses se transforment-elles en douleur ? Ou bien sont-ce
mes douleurs qui créent l'angoisse ? Mais plus j'angoisse et plus j'ai mal et
plus j'ai mal et plus j'angoisse ! Surtout que maintenant, j'angoisse d'avoir
peur et du coup, je ne sais plus pourquoi j'ai mal !.... Et ça m'angoisse !!
function array_keys_grep($array,$string) { return preg_grep('/'.$filter.'/',array_keys($array)); }
Ça fonctionne mieux comme ça :
function array_keys_grep($array,$string) { return array_keys(preg_grep('/'.$string.'/',$array)); } -- Pourquoi donc mes angoisses se transforment-elles en douleur ? Ou bien sont-ce mes douleurs qui créent l'angoisse ? Mais plus j'angoisse et plus j'ai mal et plus j'ai mal et plus j'angoisse ! Surtout que maintenant, j'angoisse d'avoir peur et du coup, je ne sais plus pourquoi j'ai mal !.... Et ça m'angoisse !!
Clifden
À priori, ça ne fonctionne pas car array_keys($array) retourne les clés (et non la valeur) ; donc preg_grep ne trouvera pas la chaîne recherchée dans les clés.
Et bien justement, c'est bien ce que tu veux faire. Tu parles de renvoyer les "numéros d'indices". Pour un tableau associatif, ce sont les clés, et c'est exactement ce que tu fais en faisant:
function array_keys_grep($array,$string) { foreach ($array as $key => $var) { if (stristr($var,$string)) $lst[]=$key; } return($lst); }
$key est bien: * le nom de la clé pour un tableau associatif * le numéro de l'indice (0,1,2,3), pour un tableau "normal"
Donc, à part la petite erreur que tu m'a fait remarqué dans ma fonction, je pense que c'est que tu voulais faire.
À priori, ça ne fonctionne pas car array_keys($array) retourne les clés
(et non la valeur) ; donc preg_grep ne trouvera pas la chaîne recherchée
dans les clés.
Et bien justement, c'est bien ce que tu veux faire. Tu parles de
renvoyer les "numéros d'indices". Pour un tableau associatif, ce sont
les clés, et c'est exactement ce que tu fais en faisant:
function array_keys_grep($array,$string) {
foreach ($array as $key => $var) {
if (stristr($var,$string)) $lst[]=$key;
}
return($lst);
}
$key est bien:
* le nom de la clé pour un tableau associatif
* le numéro de l'indice (0,1,2,3), pour un tableau "normal"
Donc, à part la petite erreur que tu m'a fait remarqué dans ma fonction,
je pense que c'est que tu voulais faire.
À priori, ça ne fonctionne pas car array_keys($array) retourne les clés (et non la valeur) ; donc preg_grep ne trouvera pas la chaîne recherchée dans les clés.
Et bien justement, c'est bien ce que tu veux faire. Tu parles de renvoyer les "numéros d'indices". Pour un tableau associatif, ce sont les clés, et c'est exactement ce que tu fais en faisant:
function array_keys_grep($array,$string) { foreach ($array as $key => $var) { if (stristr($var,$string)) $lst[]=$key; } return($lst); }
$key est bien: * le nom de la clé pour un tableau associatif * le numéro de l'indice (0,1,2,3), pour un tableau "normal"
Donc, à part la petite erreur que tu m'a fait remarqué dans ma fonction, je pense que c'est que tu voulais faire.
Dominique Ottello
Clifden écrivait :
À priori, ça ne fonctionne pas car array_keys($array) retourne les clés (et non la valeur) ; donc preg_grep ne trouvera pas la chaîne recherchée dans les clés.
Et bien justement, c'est bien ce que tu veux faire. Tu parles de renvoyer les "numéros d'indices". Pour un tableau associatif, ce sont les clés, et c'est exactement ce que tu fais en faisant:
function array_keys_grep($array,$string) { foreach ($array as $key => $var) { if (stristr($var,$string)) $lst[]=$key; } return($lst); }
$key est bien: * le nom de la clé pour un tableau associatif * le numéro de l'indice (0,1,2,3), pour un tableau "normal"
Donc, à part la petite erreur que tu m'a fait remarqué dans ma fonction, je pense que c'est que tu voulais faire.
J'ai sans doute mal posé ma question :
Soit un tableau, par exemple :
$listephoto['cmt'][67]="Photo du groupe"; $listephoto['cmt'][68]="Photo du groupe"; $listephoto['cmt'][70]="Photo du groupe des femmes"; $listephoto['cmt'][96]="Photo du groupe"; $listephoto['cmt'][99]="Photo du groupe";
Je cherche à récupérer les valeurs *numériques* des indices dont la valeur associée contient un mot déterminé.
Dans mon exemple, si j'appelle la fonction par :
array_keys_grep($listephoto['cmt'],"femme")
je récupére uniquement la valeur numérique [70], ce qui est ce que je veux.
L'appel à la fonction "Clifden" :
function array_keys_grep1($array,$string) { return preg_grep('/'.$string.'/',array_keys($array)); }
par array_keys_grep1($listephoto['cmt'],"femme")
ne retourne rien.
Il suffit d'exécuter ce qui suit :
<?php function print_lst($liste) { foreach($liste as $var) {echo "<p>".$var."</p>n";} }
$listephoto['cmt'][67]="Photo du groupe"; $listephoto['cmt'][68]="Photo du groupe"; $listephoto['cmt'][70]="Photo du groupe des femmes"; $listephoto['cmt'][96]="Photo du groupe"; $listephoto['cmt'][99]="Photo du groupe";
echo "<p>---- array_filter avec 'groupe' -------------------</p>n"; function trouve($var) { return(stristr($var,"groupe")); } print_lst(array_filter($listephoto['cmt'],"trouve"));
echo "<p>---- array_keys avec 'Photo du groupe' ------------</p>n"; print_lst(array_keys($listephoto['cmt'],"Photo du groupe"));
echo "<p>----preg_grep avec 'groupe' -----------------------</p>n"; print_lst(preg_grep("/groupe/",$listephoto['cmt']));
echo "<p>---- fonction - Ottello ----------------------------</p>n"; function array_keys_grep0($array,$string) { foreach ($array as $key => $var) { if (stristr($var,$string)) $lst[]=$key; } return($lst); } echo "<p> Recherche de 'groupe'</p>n"; print_lst(array_keys_grep0($listephoto['cmt'],"groupe"));
echo "<p> Recherche de 'femme'</p>n"; print_lst(array_keys_grep0($listephoto['cmt'],"femme"));
echo "<p>---- fonction - Clifden ----------------------------</p>n"; function array_keys_grep1($array,$string) { return preg_grep('/'.$string.'/',array_keys($array)); } echo "<p> Recherche de 'groupe'</p>n"; print_lst(array_keys_grep1($listephoto['cmt'],"groupe"));
echo "<p> Recherche de 'femme'</p>n"; print_lst(array_keys_grep1($listephoto['cmt'],"femme"));
echo "<p>---- fonction - Clifden corrigée -------------------</p>n"; function array_keys_grep2($array,$string) { return array_keys(preg_grep('/'.$string.'/',$array)); }
echo "<p> Recherche de 'groupe'</p>n"; print_lst(array_keys_grep2($listephoto['cmt'],"groupe"));
echo "<p> Recherche de 'femme'</p>n"; print_lst(array_keys_grep2($listephoto['cmt'],"femme")); ?>
et on obtient comme résultat :
---- array_filter avec 'groupe' ------------------- Photo du groupe Photo du groupe Photo du groupe des femmes Photo du groupe Photo du groupe
---- array_keys avec 'Photo du groupe' ------------ 67 68 96 99
----preg_grep avec 'groupe' ----------------------- Photo du groupe Photo du groupe Photo du groupe des femmes Photo du groupe Photo du groupe
---- fonction - Ottello ---------------------------- Recherche de 'groupe' 67 68 70 96 99 Recherche de 'femme' 70
---- fonction - Clifden ---------------------------- Recherche de 'groupe' Recherche de 'femme'
---- fonction - Clifden corrigée ------------------- Recherche de 'groupe' 67 68 70 96 99 Recherche de 'femme' 70 -- Il vaut mieux ignorer où l'on est, et savoir qu'on l'ignore, que de se croire avec confiance où l'on n'est pas. Jacques Dominique Cassini.
Clifden <clifdenn@gmail.com> écrivait :
À priori, ça ne fonctionne pas car array_keys($array) retourne les clés
(et non la valeur) ; donc preg_grep ne trouvera pas la chaîne recherchée
dans les clés.
Et bien justement, c'est bien ce que tu veux faire. Tu parles de
renvoyer les "numéros d'indices". Pour un tableau associatif, ce sont
les clés, et c'est exactement ce que tu fais en faisant:
function array_keys_grep($array,$string) {
foreach ($array as $key => $var) {
if (stristr($var,$string)) $lst[]=$key;
}
return($lst);
}
$key est bien:
* le nom de la clé pour un tableau associatif
* le numéro de l'indice (0,1,2,3), pour un tableau "normal"
Donc, à part la petite erreur que tu m'a fait remarqué dans ma fonction,
je pense que c'est que tu voulais faire.
J'ai sans doute mal posé ma question :
Soit un tableau, par exemple :
$listephoto['cmt'][67]="Photo du groupe";
$listephoto['cmt'][68]="Photo du groupe";
$listephoto['cmt'][70]="Photo du groupe des femmes";
$listephoto['cmt'][96]="Photo du groupe";
$listephoto['cmt'][99]="Photo du groupe";
Je cherche à récupérer les valeurs *numériques* des indices dont la
valeur associée contient un mot déterminé.
Dans mon exemple, si j'appelle la fonction par :
array_keys_grep($listephoto['cmt'],"femme")
je récupére uniquement la valeur numérique [70], ce qui est ce que je
veux.
L'appel à la fonction "Clifden" :
function array_keys_grep1($array,$string) {
return preg_grep('/'.$string.'/',array_keys($array));
}
par array_keys_grep1($listephoto['cmt'],"femme")
ne retourne rien.
Il suffit d'exécuter ce qui suit :
<?php
function print_lst($liste) {
foreach($liste as $var) {echo "<p>".$var."</p>n";}
}
$listephoto['cmt'][67]="Photo du groupe";
$listephoto['cmt'][68]="Photo du groupe";
$listephoto['cmt'][70]="Photo du groupe des femmes";
$listephoto['cmt'][96]="Photo du groupe";
$listephoto['cmt'][99]="Photo du groupe";
echo "<p>---- array_filter avec 'groupe' -------------------</p>n";
function trouve($var) {
return(stristr($var,"groupe"));
}
print_lst(array_filter($listephoto['cmt'],"trouve"));
echo "<p>---- array_keys avec 'Photo du groupe' ------------</p>n";
print_lst(array_keys($listephoto['cmt'],"Photo du groupe"));
echo "<p>----preg_grep avec 'groupe' -----------------------</p>n";
print_lst(preg_grep("/groupe/",$listephoto['cmt']));
echo "<p>---- fonction - Ottello ----------------------------</p>n";
function array_keys_grep0($array,$string) {
foreach ($array as $key => $var) {
if (stristr($var,$string)) $lst[]=$key;
}
return($lst);
}
echo "<p> Recherche de 'groupe'</p>n";
print_lst(array_keys_grep0($listephoto['cmt'],"groupe"));
echo "<p> Recherche de 'femme'</p>n";
print_lst(array_keys_grep0($listephoto['cmt'],"femme"));
echo "<p>---- fonction - Clifden ----------------------------</p>n";
function array_keys_grep1($array,$string) {
return preg_grep('/'.$string.'/',array_keys($array));
}
echo "<p> Recherche de 'groupe'</p>n";
print_lst(array_keys_grep1($listephoto['cmt'],"groupe"));
echo "<p> Recherche de 'femme'</p>n";
print_lst(array_keys_grep1($listephoto['cmt'],"femme"));
echo "<p>---- fonction - Clifden corrigée -------------------</p>n";
function array_keys_grep2($array,$string) {
return array_keys(preg_grep('/'.$string.'/',$array));
}
echo "<p> Recherche de 'groupe'</p>n";
print_lst(array_keys_grep2($listephoto['cmt'],"groupe"));
echo "<p> Recherche de 'femme'</p>n";
print_lst(array_keys_grep2($listephoto['cmt'],"femme"));
?>
et on obtient comme résultat :
---- array_filter avec 'groupe' -------------------
Photo du groupe
Photo du groupe
Photo du groupe des femmes
Photo du groupe
Photo du groupe
---- array_keys avec 'Photo du groupe' ------------
67
68
96
99
----preg_grep avec 'groupe' -----------------------
Photo du groupe
Photo du groupe
Photo du groupe des femmes
Photo du groupe
Photo du groupe
---- fonction - Ottello ----------------------------
Recherche de 'groupe'
67
68
70
96
99
Recherche de 'femme'
70
---- fonction - Clifden ----------------------------
Recherche de 'groupe'
Recherche de 'femme'
---- fonction - Clifden corrigée -------------------
Recherche de 'groupe'
67
68
70
96
99
Recherche de 'femme'
70
--
Il vaut mieux ignorer où l'on est, et savoir qu'on l'ignore, que de se
croire avec confiance où l'on n'est pas. Jacques Dominique Cassini.
À priori, ça ne fonctionne pas car array_keys($array) retourne les clés (et non la valeur) ; donc preg_grep ne trouvera pas la chaîne recherchée dans les clés.
Et bien justement, c'est bien ce que tu veux faire. Tu parles de renvoyer les "numéros d'indices". Pour un tableau associatif, ce sont les clés, et c'est exactement ce que tu fais en faisant:
function array_keys_grep($array,$string) { foreach ($array as $key => $var) { if (stristr($var,$string)) $lst[]=$key; } return($lst); }
$key est bien: * le nom de la clé pour un tableau associatif * le numéro de l'indice (0,1,2,3), pour un tableau "normal"
Donc, à part la petite erreur que tu m'a fait remarqué dans ma fonction, je pense que c'est que tu voulais faire.
J'ai sans doute mal posé ma question :
Soit un tableau, par exemple :
$listephoto['cmt'][67]="Photo du groupe"; $listephoto['cmt'][68]="Photo du groupe"; $listephoto['cmt'][70]="Photo du groupe des femmes"; $listephoto['cmt'][96]="Photo du groupe"; $listephoto['cmt'][99]="Photo du groupe";
Je cherche à récupérer les valeurs *numériques* des indices dont la valeur associée contient un mot déterminé.
Dans mon exemple, si j'appelle la fonction par :
array_keys_grep($listephoto['cmt'],"femme")
je récupére uniquement la valeur numérique [70], ce qui est ce que je veux.
L'appel à la fonction "Clifden" :
function array_keys_grep1($array,$string) { return preg_grep('/'.$string.'/',array_keys($array)); }
par array_keys_grep1($listephoto['cmt'],"femme")
ne retourne rien.
Il suffit d'exécuter ce qui suit :
<?php function print_lst($liste) { foreach($liste as $var) {echo "<p>".$var."</p>n";} }
$listephoto['cmt'][67]="Photo du groupe"; $listephoto['cmt'][68]="Photo du groupe"; $listephoto['cmt'][70]="Photo du groupe des femmes"; $listephoto['cmt'][96]="Photo du groupe"; $listephoto['cmt'][99]="Photo du groupe";
echo "<p>---- array_filter avec 'groupe' -------------------</p>n"; function trouve($var) { return(stristr($var,"groupe")); } print_lst(array_filter($listephoto['cmt'],"trouve"));
echo "<p>---- array_keys avec 'Photo du groupe' ------------</p>n"; print_lst(array_keys($listephoto['cmt'],"Photo du groupe"));
echo "<p>----preg_grep avec 'groupe' -----------------------</p>n"; print_lst(preg_grep("/groupe/",$listephoto['cmt']));
echo "<p>---- fonction - Ottello ----------------------------</p>n"; function array_keys_grep0($array,$string) { foreach ($array as $key => $var) { if (stristr($var,$string)) $lst[]=$key; } return($lst); } echo "<p> Recherche de 'groupe'</p>n"; print_lst(array_keys_grep0($listephoto['cmt'],"groupe"));
echo "<p> Recherche de 'femme'</p>n"; print_lst(array_keys_grep0($listephoto['cmt'],"femme"));
echo "<p>---- fonction - Clifden ----------------------------</p>n"; function array_keys_grep1($array,$string) { return preg_grep('/'.$string.'/',array_keys($array)); } echo "<p> Recherche de 'groupe'</p>n"; print_lst(array_keys_grep1($listephoto['cmt'],"groupe"));
echo "<p> Recherche de 'femme'</p>n"; print_lst(array_keys_grep1($listephoto['cmt'],"femme"));
echo "<p>---- fonction - Clifden corrigée -------------------</p>n"; function array_keys_grep2($array,$string) { return array_keys(preg_grep('/'.$string.'/',$array)); }
echo "<p> Recherche de 'groupe'</p>n"; print_lst(array_keys_grep2($listephoto['cmt'],"groupe"));
echo "<p> Recherche de 'femme'</p>n"; print_lst(array_keys_grep2($listephoto['cmt'],"femme")); ?>
et on obtient comme résultat :
---- array_filter avec 'groupe' ------------------- Photo du groupe Photo du groupe Photo du groupe des femmes Photo du groupe Photo du groupe
---- array_keys avec 'Photo du groupe' ------------ 67 68 96 99
----preg_grep avec 'groupe' ----------------------- Photo du groupe Photo du groupe Photo du groupe des femmes Photo du groupe Photo du groupe
---- fonction - Ottello ---------------------------- Recherche de 'groupe' 67 68 70 96 99 Recherche de 'femme' 70
---- fonction - Clifden ---------------------------- Recherche de 'groupe' Recherche de 'femme'
---- fonction - Clifden corrigée ------------------- Recherche de 'groupe' 67 68 70 96 99 Recherche de 'femme' 70 -- Il vaut mieux ignorer où l'on est, et savoir qu'on l'ignore, que de se croire avec confiance où l'on n'est pas. Jacques Dominique Cassini.