显示零

Displaying a zero

我正在使用 str_replace 填充一些值为数字的模板。 当数字为 0(零)时,PHP 认为它是假的,什么都不写。

我尝试了在 SO 和网络上找到的所有解决方案:

NONE 个有效。

显示它的唯一方法是将 $myZeroVar 与 space ($myZeroVar.' ') 连接起来。 但是,如果我不想要这个 space 怎么办??

我做错了什么吗?在 PHP 配置中也许?

别告诉我你们每次输出数字时都在连接一个 space ?

谢谢

编辑:

这是我很棒的模板系统(开玩笑):

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

结果是:"Some text with a "

编辑:已解决

好的。就在我 运行 躲在我的桌子底下之前,我必须告诉你问题出在我很棒的模板系统之前的一行 :

if(!empty($data)

所以现在我将其替换为 $val === '' || $val === null

一切都很好... 我喜欢浪费时间来解决由我造成的问题。

看来我永远不会在这里做出有用的 post!

谢谢大家

不要投太多票,这个post对新手有点用处: 始终检查 3 次 !

尝试这样的事情

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

它对我有用“{$var}”格式已停止php将其读取为true/false并改为字符串

运行 测试一下值是否为零如何?然后将其修改为字符串零?

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

为什么不使用 sprintf 而不是 str_replace?

这样您就可以在字符串模板中设置数据类型。

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

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,因为它使您可以轻松地支持更复杂的浮点数。两者都可以。

我的变量没有显示出来,不是因为一些错误或配置错误,而是因为只有当变量不是empty()时才会填充模板。

和空函数 returns true 为 0.

($var !== '' && $var !== null) 替换 !empty($var) 解决了问题。