Отображение нуля

Я заполняю шаблон с некоторыми значениями, являющимися числами, используя str_replace.
Когда число равно 0 (ноль), PHP думает, что оно ложно и ничего не пишет.

Я попробовал все решения, найденные в SO и в Интернете:

  • intval ($ myZeroVar)
  • floatval ($ myZeroVar)
  • strval ($ myZeroVar)
  • (Строка) $ myZeroVar
  • ». $ MyZeroVar
  • случайные тесты с использованием number_format, sprintf, str_pad …

Ни один из них не работает.

Единственный способ показать это — объединить $ myZeroVar с пробелом ($myZeroVar.' ').
Но что, если я не хочу это место ??

Я делаю что-то неправильно ? В конфиге PHP возможно?

Не говорите мне, что вы все соединяете пробел каждый раз, когда выводите число?

Спасибо

РЕДАКТИРОВАТЬ :

Вот моя замечательная система шаблонов (шучу):

$template = 'Some text with a {value}';
$data = 0;
$template = str_replace('{value}', $data, $template);

Результат: «какой-то текст с»

Изменить: решено

Хорошо. Непосредственно перед тем, как я убежал, чтобы спрятаться под столом, я должен сказать вам, что проблема возникла прямо перед моей замечательной системой шаблонов:

if(!empty($data)

Так что теперь я заменил это на $val === '' || $val === null

И все хорошо …
Я люблю терять часы, чтобы решить проблемы, вызванные мной.

Похоже, я никогда не сделаю полезный пост здесь!

Спасибо всем.

Не стоит слишком сильно недооценивать, этот пост несколько полезен для новичков:
ВСЕГДА ПРОВЕРЬТЕ 3 раза!

0

Решение

попробуй что-нибудь подобное

<?php
echo "{$myZeroVar}";
?>

он работал для меня «{$ var}», что формат остановил php, читая его как true / false и вместо этого строку

0

Другие решения

Как насчет запуска теста, чтобы увидеть, если значение равно нулю. Затем измените его так, чтобы он был нулевой строкой?

$template = 'Some text with a {value}';
$data = 0;
if (!$data) {
$data = "0";
}
$template = str_replace('{value}', $data, $template);
0

Почему ты не используешь Sprintf вместо str_replace?

Таким образом, вы можете установить свой тип данных в шаблоне строки.

$template = 'Some text with a %d';
$data = 0;
$result = sprintf($template, $data);
0

printf Команда и ее друзья обрабатывают форматирование так, как вы хотите.

$template = "Some text with a %.0f\n";
$data = 0;
$output = sprintf($template, $data);

Если вы хотите преобразовать шаблон в формат printf из вашего программного обеспечения, это тоже вариант.

$template = "Some text with a {value}\n";
$data = 0;
$template_fmt = str_replace('{value}', '%.0f', $template);
$output = sprintf($template_fmt, $data);

Обратите внимание, что я использую %.0f вместо %d потому что он предлагает вам легкий переход к поддержке более сложных чисел с плавающей запятой. Либо должен сделать.

0

Моя переменная не отображалась не из-за некоторых ошибок или неправильной конфигурации, а потому, что шаблон заполняется, только если переменная не empty(),

И пустая функция возвращает true за 0.

Замена !empty($var) с ($var !== '' && $var !== null) решил проблему.

0
По вопросам рекламы [email protected]