|
|||||||
| Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
![]() Date d'inscription: novembre 2005
Localisation: Plomodiern Bretagne France
Âge: 57
Messages: 1 566
|
Saluton,
Tout est dans le titre ou presque. J'aimerais pouvoir passer en paramètres à la fonction callback requise par usort la liste des colonnes un peu comme on le fait avec ORDER BY en SQL. Seulement je ne vois vraiment pas comment m'y prendre vu que la fonction est invoquée par son nom sous forme de string : Code :
usort($tableau,'callback'); Il y a bien la piste d'un array GLOBAL.... Dernière modification par Maljuna Kris ; 30/09/2008 à 15h54. |
|
|
|
|
|
#2 (permalink) |
![]() Date d'inscription: juin 2003
Messages: 4 699
|
tu peux passer les informations par le nom d'une méthode dynamique par exemple
un exemple : Code :
class TriDynamique { public function __call($nom, $arguments) { $tabNom = explode('-', $nom); // $tabNom[0] contient 'tri' // $tabNom[1] contient le nom de la clé à trier $valeur1 = $arguments[0][$tabNom[1]]; $valeur2 = $arguments[1][$tabNom[1]]; if ($valeur1 == $valeur2) { return 0; } return ($valeur1 < $valeur2) ? -1 : 1; } } $triDynamique = new TriDynamique(); $donnees = array( array( 'nom' => 'Pierre', 'age' => 24, ), array( 'nom' => 'Paul', 'age' => 28, ), array( 'nom' => 'Jacques', 'age' => 23, ), ); echo "Données de départ : \n"; print_r($donnees); echo "Tri suivant le nom : \n"; uasort($donnees, array($triDynamique, 'tri-nom')); print_r($donnees); echo "Tri suivant l'age : \n"; uasort($donnees, array($triDynamique, 'tri-age')); print_r($donnees); Code x :
Données de départ :
Array
(
[0] => Array
(
[nom] => Pierre
[age] => 24
)
[1] => Array
(
[nom] => Paul
[age] => 28
)
[2] => Array
(
[nom] => Jacques
[age] => 23
)
)
Tri suivant le nom :
Array
(
[2] => Array
(
[nom] => Jacques
[age] => 23
)
[1] => Array
(
[nom] => Paul
[age] => 28
)
[0] => Array
(
[nom] => Pierre
[age] => 24
)
)
Tri suivant l'age :
Array
(
[2] => Array
(
[nom] => Jacques
[age] => 23
)
[0] => Array
(
[nom] => Pierre
[age] => 24
)
[1] => Array
(
[nom] => Paul
[age] => 28
)
)
__________________
Modérateur PHP |
|
|
|
|
|
#3 (permalink) |
![]() Date d'inscription: novembre 2005
Localisation: Plomodiern Bretagne France
Âge: 57
Messages: 1 566
|
Merci beaucoup,
Tout cela reste un peu magique pour moi, mais je vais m'y faire. La doc php n'est pas très prolixe en exemples un peu pointus sur les classements de tableaux. Et je n'aurai jamais deviné que usort() pouvait recevoir un tableau en deuxième argument. |
|
|
|
|
|
#4 (permalink) |
![]() Date d'inscription: mars 2006
Localisation: Aude
Âge: 31
Messages: 1 877
|
Bonjour,
Des explications sur les possibilités pour les fonctions callback dans la doc de php : http://php.net/callback |
|
|
|
|
|
#5 (permalink) |
![]() Date d'inscription: novembre 2005
Localisation: Plomodiern Bretagne France
Âge: 57
Messages: 1 566
|
Encore merci.
Dont acte, je pense qu'un lien vers cette partie spécifique de la doc dans les items concernés ne serait pas un luxe, car il n'est pas intuitif (et c'est un euphémisme) de la trouver sous la rubrique :Variables et pseudo-types utilisés dans cette documentation. Quoique callback soit (à la réflexion), un pseudo-type. Au temps pour moi, le lien existe. Je ne sais même plus où me cacher |
|
|
|
|
![]() |
![]() |
||
[Tableaux] usort : passer des paramètres à la fonction de callback
|
||
| Outils de la discussion | |
|
|