Voici un code rude pour vous aider à démarrer:
En fait, il semble à la première lettre de chaque mot dans le tableau de données, les contrôles de sa position dans le tableau $sortOrder
. Les lettres qui ne sont pas en $sortOrder
sont placées à la fin dans l'ordre apparaissent.
Dès le départ, cela va se casser si $sortOrder
a plus de 100 000 articles. Il y a probablement d'autres trous aussi mais je pense que c'est un exemple assez décent de la façon dont fonctionne usort()
.
<?php
function getSortOrder($c) {
$sortOrder = array("j","c","z","l","a");
$pos = array_search($c, $sortOrder);
return $pos !== false ? $pos : 99999;
}
function mysort($a, $b) {
if(getSortOrder($a[0]) < getSortOrder($b[0])) {
return -1;
}elseif(getSortOrder($a[0]) == getSortOrder($b[0])) {
return 0;
}else {
return 1;
}
}
$data = array(
"banana",
"apple",
"love",
"zasca",
"japanese",
"car"
);
echo '<pre>' . print_r($data,true) . '</pre>';
usort($data, "mysort");
echo '<pre>' . print_r($data,true) . '</pre>';
?>
getSortOrder ≅ array_search? –
Ouais, je viens de le mettre à jour pour utiliser array_search à la place. :) –