2009-07-07 12 views
1

J'utilise un modèle smarty pour un site Web multilingue. J'ai un tableau de pays qui est en ordre par code de pays, ce qui est correct pour la version anglaise car le nom du pays est dans le bon ordre mais pas pour d'autres langues (par exemple le Royaume-Uni reste dans le "U" alors qu'en français . "Royaume Uni"Existe-t-il une fonction smarty spécifique pour classer par ordre alphabétique un tableau?

y at-il une fonction Smarty pour commander un tableau alphabétique

Répondre

2

Vous devez trier le avant de l'assigner à smarty en tant que telle:

asort($countryList); 
$smarty->assign($countryList); 

utilisation:

  • asort() pour trier le tableau par valeur.
  • ksort() pour trier le tableau par des clés.
+1

Je pensais qu'il veut qu'elle soit triée par valeur, et non les clés –

+2

Vous ne voulez pas trier par clés, vous voulez trier les valeurs de maintien association. D'après ce que j'ai compris du message original, la clé est le code du pays et la valeur est l'étiquette. array ('GB' => 'Royaume-Uni'). Mon message est juste. –

+0

Assez juste, downvote enlevé. Mon mauvais pour mal interpréter le tout :( – karim79

2

Vous pouvez appliquer un modificateur à un tableau dans Smarty comme celui-ci (le préfixe @ signifie que le modificateur est appliqué à la totalité du tableau, et non pas chaque élément):

$array|@some_modifier 

asort() ne fonctionnera pas comme un modificateur cependant, car il modifie le tableau transmis et renvoie un booléen plutôt que de retourner un tableau modifié. Vous pouvez cependant définir votre propre fonction et l'utiliser comme modificateur, par ex.

function sort_array($array) { 
    asort($array); 
    return $array; 
} 

Ensuite, dans Smarty vous pouvez faire quelque chose comme

{foreach from=$array|@sort_array item=val} 
    {$val} 
{/foreach} 
Questions connexes