2010-06-28 6 views
1

J'ai besoin de tester si deux variables sont égales. Mais l'un est en format chaîne et l'autre est un nombre. Donc, j'essaie de convertir la variable en texte, mais sans succès.Comment convertir un nombre numérique en chaîne?

Vous avez une idée?

+0

Pouvez-vous montrer du code? Avez-vous essayé la comparaison? Les chances sont que si Smarty se compare de la même manière que le '==' de PHP, '1' et' "1" 'seront égaux. –

+0

oui, j'ai essayé de comparer avec ==, mais ça ne marche pas – bahamut100

Répondre

2

Essayez d'utiliser {$ number | string_format: "%. 2f"} pour convertir les nombres en chaînes et les comparer. ou {$ number | string_format: "% d"} s'il s'agit d'un entier, au lieu de nombres flottants.

Je ne vois pas de moyen dans smarty de lancer explicitement une piqûre à un entier, donc vous devriez convertir les deux en une chaîne.

Si cela ne fonctionne pas, veuillez poster votre code. Peut-être que le problème réside dans une ligne différente ..

0

J'ai eu le même problème en raison de la php conversion automatique des clés de tableau (chaîne) en entiers basés sur le fait qu'ils ressemblent à des entiers (c'est en fait une "fonctionnalité" documentée !) et ensuite je mets ma comparaison dans Smarty. La ligne droite vers l'avant et tout à fait d'une manière terrible de le faire est:

{php}$this->assign('STR', strval($this->get_template_vars('NUM')));{/php} 

Si vous avez besoin d'utiliser plus souvent dans votre code, ne pas ecrire une coutume Smarty {} strval.

0

Vous pouvez utiliser settype pour convertir l'entier en une chaîne, puis les comparer ...

$var1 = 10; 
$var2 = "10"; 
{$converted = settype($var2, 'integer')} 

OU

{$converted = settype($var1, 'string')} 

Cela vous donnera vars du même type. La seule raison d'avoir la variable $ convertie est que le bool retourné apparaîtra sur votre page si elle n'est pas affectée.

Questions connexes