2 votes

trier le tableau numériquement seulement

Voici le tableau

$array = array(
   'list[P] = 1',
   'list[A] = 1',
   'list[F] = 2',
   'list[B] = 1'
);

Voici le résultat que je souhaite obtenir

[0] => list[P] = 1
[1] => list[A] = 1
[2] => list[B] = 1
[3] => list[F] = 2

avis list[P] reste en tête parce qu'il est le premier à avoir la valeur 1. Ainsi, seul le tri numérique

5voto

Codemwnci Points 28817

Essayez de jeter un coup d'œil à cette documentation .

Comme vous essayez de trier une partie spécifique de la valeur, vous devez écrire votre propre comparateur, et donc la seule méthode disponible est la méthode usort función.

La fonction uksort prend deux attributs, le tableau et le nom de la méthode que vous souhaitez utiliser pour effectuer votre comparaison. Vous écrivez ensuite cette méthode, qui prend deux valeurs en paramètre et renvoie un true ou un false, selon que la valeur est supérieure ou inférieure.

Par conséquent, vous devrez soustraire les valeurs entrantes, pour ne comparer que les chiffres.

L'exemple de code suivant semble fonctionner

function cmp($a, $b)
{
    $a = substr($a, -1);
    $b = substr($b, -1);
    return $a >= $b;
}

$array = array(
   'list[P] = 1',
   'list[A] = 1',
   'list[F] = 2',
   'list[B] = 1'
);

usort($array, "cmp");

var_dump($array);

Le même code, mais en utilisant la fonction anonyme de PHP :

$array = array(
   'list[P] = 1',
   'list[A] = 1',
   'list[F] = 2',
   'list[B] = 1'
);

usort(
   $array,
   function ($a, $b){
      $a = substr($a, -1);
      $b = substr($b, -1);
      return $a >= $b;
   }
);

var_dump($array);

0voto

developer Points 23

S'il est important de conserver les enregistrements ou les clés ayant des valeurs égales dans le même ordre qu'ils ont été saisis dans le tri dans le logiciel que vous écrivez, vous aurez besoin d'un algorithme ou d'une méthode de tri classé(e) comme "stable". Cela limite les types de méthodes de tri dont dispose un programmeur dans un pays ou une région de ce pays pour se conformer aux règles applicables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X