Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Classement par ordre alphabetique et particule

1 réponse
Avatar
Eric
Bonjour à tous,

J'ai un champ 'noms', dans le quel j'insère des ... noms !
Je voudrais classer ces noms par ordre alphabétique (ça c'est simple, pas de
souci).
Là où ça se complique, c'est que j'ai besoin de cet ordre alphabétique pour
tous les noms, y compris ceux à particule, mais sans tenir compte de la
particule.

Exemple:

Soit les noms suivants:
Balzac
de Noailles
Diderot
d'Alembert

Un classement par ordre alphabétique me donne:
Balzac
d'Alembert
de Noailles
Diderot

J'ai besoin de l'ordre suivant, sachant que la particule n'est pas détachée
du nom (elle est dans le mm champ):
d'Alembert
Balzac
Diderot
de Noailles

Une piste ?

Merci à tous, et bon WE,
Eric

1 réponse

Avatar
Christophe PEREZ
Le Sun, 16 Nov 2003 00:02:51 +0000, Eric a écrit:

Une piste ?


Faire ta propre fonction de comparaison et l'utiliser dans un usort().

Exemple :
function compare($a,$b) {
$expr = "/^.*[ ']/";
if ( $a == $b ) return 0;
return (preg_replace($expr,"",$a) < preg_replace($expr,"",$b)) ? -1 : 1;
}

$tabl = array("Balzac","de Noailles","Diderot","d'Alembert");
usort($tabl,"compare");
foreach($tabl as $val) {
echo $val."<br />";
}

Donne bien le résultat souhaité.
Mais je ne sais pas s'il y a d'autres cas particuliers à prendre en
compte, donc s'il faut adapter encore l'expression rationnelle ($expr).

--
Christophe PEREZ
Écrivez moi sans _faute !