zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009
-
12 avril 2007 à 14:11
zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009
-
13 avril 2007 à 19:59
Salut!
J'ai besoin de récupérer le code source de la fonction sort() fournie par php. Comment puis-je l'obtenir?
Mon problème est le suivant : j'ai deux tableaux, un avec des num téléphone, l'autre avec les prénoms correspondants (environ 10 000 entrées dans le tableau...)
J'ai besoin de trier cette liste, soit par prénom, soit par nom. Donc si je tri un tableau, il faut à chaque fois que le deuxième lui corresponde.
Je ne peux donc pas utiliser la fonction sort de php. J'ai donc fait une fonction de tri, qui met 30 fois plus de temps que celle de php... snif!
Si quelqu'un peut me dire ce qu'utilise php pour son tri (quick sort, fast quicksort, bubble sort ... ou encore un truc meilleur...), ce serait super sympa!!!!
zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009 12 avril 2007 à 23:48
Voilmà, merci à tous pour votre aide!
J'ai trouvé la solution :
array_multisort($num_port, $nom_port);
Il va trier les deux tableaux en fonction des valeurs du premier tableau, puis celles du deuxième en cas de doublons dans le premier tableau.
Returns <tt>TRUE</tt> on success or <tt>FALSE</tt> on failure.
array_multisort() can be used to sort several
arrays at once, or a multi-dimensional array by one or more
dimensions.
Associative (string) keys will be maintained, but numeric
keys will be re-indexed.
The input arrays are treated as columns of a table to be sorted
by rows - this resembles the functionality of SQL ORDER BY
clause. The first array is the primary one to sort by. The rows
(values) in that array that compare the same are sorted by the
next input array, and so on.
The argument structure of this function is a bit unusual, but
flexible. The first argument has to be an array. Subsequently,
each argument can be either an array or a sorting flag from the
following lists.
Sorting order flags:
<li><tt>SORT_ASC</tt> - Sort in ascending order</li><li><tt>SORT_DESC</tt> - Sort in descending order</li>
No two sorting flags of the same type can be specified after each
array. The sorting flags specified after an array argument apply
only to that array - they are reset to default <tt>SORT_ASC</tt> and
<tt>SORT_REGULAR</tt> before each new array argument.
zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009 12 avril 2007 à 17:21
Evidement, je ne suis pas venu poster ma question sans avoir chercher avant...
J'avais surtout besoin d'une explication de l'explication.
Tout aurait plus simple si j'avais le code de la fonction sort, mais aparement j'en ai pas besoin.
je dois donc utiliser array_multisort, mais je suis pas ssûr de comprendre comment ça marche.
J'ai donc $tab_num qui contient les numéros, $tab_nom qui contient les noms.
$tab_num[0] = 0603030303 $tab_nom[0] = Arnaud
$tab_num[1] = 0602020202 $tab_nom[1] = Xavier
$tab_num[2] = 0601010101 $tab_nom[2] = Paul
Alors si je fais array_multisort($tab_num, $tab_nom);
j'obtiens bien :
Il va pas me ressortir les deux tableaux triés 1 à 1???
Et la syntaxe de la fonction est bonne comme je l'ai écrite, parce que ça ressemble pas du tout au prototype donné par la doc...
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 200710 12 avril 2007 à 17:40
<< Il va pas me ressortir les deux tableaux triés 1 à 1??? >>
Qu'entends-tu par là ?
En plus le résultat que tu me présentes plus haut semble parfait... Non ? Tout est bien, tu as trié les numéro (premier tableau présenté) et les noms on suivit... réindexation correcte! Non?
Bon, mais si ton problème se limite à deux tableaux (num+nom), tu peux choisir de les combiner en un seul (num en clefs et noms en valeurs)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 12 avril 2007 à 19:45
"Tout aurait plus simple si j'avais le code de la fonction sort, mais aparement j'en ai pas besoin."
Fonction C/C++ on vient de te dire. Donc inutilisable via PHP ! C'est pour ca que d'autres fonctions existent !
De toute facon, si t'as 2 tableaux pour gérer la même chose, y'a un problème de conception.
Fusionne tes tableaux pour commencer.
zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009 12 avril 2007 à 22:51
"Fonction C/C++ on vient de te dire. Donc inutilisable via PHP ! C'est pour ca que d'autres fonctions existent !"
Je vois pas pourquoi c'est "inutilisable" en PHP. Meme si y a une lib C compilée qui est utilisée par PHP, le code existe, et donc on pourrait retranscrire en PHP...
D'ailleur le langage PHP est quand même super inspiré du C....
Bon toute façon j'ai bien admis que j'avais pas besoin de connaitre le code.
Ensuite, 565117 J_G, merci de ta réponse.
Alors pour ta question, par "trier les tableaux 1 à 1", j'entendais trier le premier puis trier le deuxième.
Mois j'utilise les deux tableaux comme une base de données :
J'ai une colonne num, une colonne nom.
Evidement, quand tu changes l'ordre d'une colonne, l'autre colonne doit changer aussi puisque les num doivent correspondre toujours aux même noms (logique).
La solution que tu m'as proposé me parait intéressante, je vais essayer ça.
Sinon FHX me signal un problème de conception, c'est probable.
Si je crée un tableau à deux dimentions, est-ce que je peux trier le tableau selon une colonne que je choisis?
exemple :
$tab[0][0] = 0603030303;
$tab[0][1] = Arnaud;
$tab[1][0] = 0602020202;
$tab[1][1] = Xavier;
$tab[2][0] = 0601010101;
$tab[2][1] = Paul;
Comment je dois utiliser la fonction array_multisort pour obtenir le tri selon la premiere colonne (les numéros)?
PS: "En plus le résultat que tu me présentes plus haut semble parfait... Non ?"
Enfait c'était une question, j'ai rien obtenu du tout. Je voulais juste qu'on m'indique la syntaxe de la fonction, je comprends pas du tout le
"bool array_multisort ( array $ar1 [, mixed $arg [, mixed $... [, array $...]]] )"
Il me faudrait simplement la ligne à écrire du style :
array_multisort($tab, 0);
zoukozouko
Messages postés148Date d'inscriptiondimanche 25 janvier 2004StatutMembreDernière intervention21 janvier 2009 13 avril 2007 à 19:59
B la pour le coup, ca sert à rien puisque la fonction qui fait exctement ce que je veux existe.
Sinon, juste pour un tri, ca m'aurait pas bien déranger de retranscrire le C en PHP.
D'autant plus que j'ai reussi à trouver toutes les fonctions C de PHP, j'allais commencer à transcrire...
J'ai donc économisé une bonne heure de mon temps. En plus, rien ne me garantissait qu'en retrancrivant le code, PHP irait aussi vite que C, ce qui m'étonnnerait pas mal (rien que pour la gestion des variables...).