J'ai un tableau comme celui-ci:tableau Difficile ordre de tri
array(
0 => array("src" => "foo-21.gif"),
1 => array("src" => "bar-short.gif"),
2 => array("src" => "baz-1.gif"),
3 => array("src" => "whatever.gif"),
4 => array("src" => "some-long.gif"),
5 => array("src" => "xyz.gif"),
);
La valeur de l'élément src
peut être quelque chose.
Cependant, il n'y aura que max. un élément contenant short
(ici c'est l'élément 1) et seulement max. un élément contenant long
(ici c'est l'élément 4). Ils peuvent être n'importe où dans le tableau. Ou pas du tout.
Ce que je dois faire maintenant est:
- L'élément avec
src
contenantshort
doit être d'abord si présent - L'élément conaining
long
doit être la dernière si elle est présente - L'ordre entre ne pas matière.
Ainsi, l'exemple ressemblerait à ceci:
array(
0 => array("src" => "bar-short.gif"), // containing "short" = first
1 => array("src" => "foo-21.gif"),
2 => array("src" => "baz-1.gif"),
3 => array("src" => "whatever.gif"),
4 => array("src" => "xyz.gif"),
5 => array("src" => "some-long.gif"), // containing "long" = last
);
Comment puis-je faire cela? usort
ne semble pas être une bonne idée ici.
Modifier pour remplacer preg_match() avec strpos(). Tout le monde sait que SO aime '(?! Regex)'. – scribble
Nice! J'ai fait exactement ce dont j'avais besoin! – Max