Как преобразовать числовое число в строку? - PullRequest
1 голос
/ 28 июня 2010

Мне нужно проверить, равны ли две переменные.Но один в строковом формате, а другой номер.

Итак, я пытаюсь преобразовать переменную в текст, но безуспешно.

У вас есть идея?

Ответы [ 3 ]

2 голосов
/ 02 июля 2010

Попробуйте использовать {$ number | string_format: "%. 2f"}, чтобы преобразовать оба числа в строки и сравнить их. или {$ number | string_format: "% d"}, если это целое число, а не числа с плавающей запятой.

Я не вижу способа в smarty явно приводить строчку к целому числу, поэтому вы должны преобразовать оба в строку.

Если это не работает, пожалуйста, оставьте свой код. Может быть, проблема в другой строке ...

0 голосов
/ 24 июня 2013

Вы можете использовать settype для преобразования целого числа в строку, а затем сравнить их ...

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

ИЛИ

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

Это даст вам переменные одного типа.Единственная причина, по которой переменная $ преобразована, заключается в том, что возвращаемое значение bool появится на вашей странице, если оно не назначено.

0 голосов
/ 10 декабря 2011

У меня была такая же проблема из-за того, что php автоматически преобразовывает ключи массива (строки) в целые числа, основываясь на том факте, что они выглядят как целые числа (это на самом деле задокументированная "особенность"!), А затем испортил мое сравнение в Smarty.Прямой и довольно ужасный способ сделать это:

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

Если вам нужно чаще использовать его в своем коде, подумайте о написании собственного Smarty {strval}.

...