显示零
Displaying a zero
我正在使用 str_replace 填充一些值为数字的模板。
当数字为 0(零)时,PHP 认为它是假的,什么都不写。
我尝试了在 SO 和网络上找到的所有解决方案:
- 整数($myZeroVar)
- floatval($myZeroVar)
- strval($myZeroVar)
- (字符串)$myZeroVar
- ''.$myZeroVar
- 随机测试使用 number_format、sprintf、str_pad...
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)
解决了问题。
我正在使用 str_replace 填充一些值为数字的模板。 当数字为 0(零)时,PHP 认为它是假的,什么都不写。
我尝试了在 SO 和网络上找到的所有解决方案:
- 整数($myZeroVar)
- floatval($myZeroVar)
- strval($myZeroVar)
- (字符串)$myZeroVar
- ''.$myZeroVar
- 随机测试使用 number_format、sprintf、str_pad...
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)
解决了问题。