fonction callback dans array_filter

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fonction callback dans array_filter

par zeus » 20 sept. 2007, 10:18

Pour toutes ces question, il y a un joli sujet dans la FAQ : Comment mettre en forme vos messages

par apatride » 20 sept. 2007, 10:15

PS: je ne sais pas passer ce fil à "résolu".

par Invité » 20 sept. 2007, 10:08

Je trouve cette solution plus élégante que celle que j'ai trouvée :
array_walk ($listeDesCours, 'recherche',$isin);
var_dump(array_filter($listeDesCours));
Merci !

par sadeq » 19 sept. 2007, 23:12

La fonction utilisateur utilisée par callback dans array_filter() ne doit comporter qu'un seul paramètre dans sa signature et ce paramètre correspond à chaque valeur dans le tableau filtré. C'est logique car ce paramètre passe implicitement au callback.

Maintenant pour passer plusieurs paramètres externes nécéssaire à l'algorithme de la fonction callback, il faut utiliser des variables globales. Ainsi, la fonction peut voir les valeurs externes nécéssaires.
Pour ça, on utilise le modificateur global dans la fonction pour déclarer les variables globales à accèder.

Exemple:
//Fonction callback
function chaine_recherche($chaineTestee)
{
    global $chaineRecherchee;
    return stristr ( $chaineTestee, $chaineRecherchee );
}

//Programme principal
$array1 = array ("aline", "toto", "ncolas", "toto123"); //source
$chaineRecherchee  = "toto"; //variable globale à la fonction callback
print_r(array_filter($array1, "chaine_recherche")); //recherche
ps: les variables globales de PHP ne sont globales que pour les fonctions qui le veulent. Il suffit que la fonction appelle les variables globales nécéssaires par le modificateur "global"

fonction callback dans array_filter

par apatride » 17 sept. 2007, 16:19

Bonjour,

Je souhaite extraire d'un tableau uniquement les lignes contenant une certaine chaine de caractères.

Je voudrais utiliser la fonction array_filter.
La fonction de callback que je voulais utiliser a donc 2 paramètres :
- un destiné à recevoir chaque valeur du tableau: $chaineTestee,
- un autre contenant la chaine recherchée: $chaineRecherchee.
function chaine_recherche($chaineTestee,$chaineRecherchee)
{
	return stristr ( $chaineTestee, $chaineRecherchee )
}
La syntaxe
print_r(array_filter($array1, "chaine_recherche"));
qui ne comporte que le nom de la fonction, ne me permet pas de définir la paramère de la chaine recherchée, c'est à dire $chaineRecherchee.

Comment utiliser cette fonction avec 2 paramètres ?