我正在使用str_replace填充模板,其中一些值为数字。 当一个数字为0(零)时,PHP认为它是假的并且什么都不写。
我尝试了在SO和网络上找到的每个解决方案:
这些都没有工作。
显示它的唯一方法是将$ 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 :(得分:0)
尝试这样的事情
<?php
echo "{$myZeroVar}";
?>
它为我工作&#34; {$ var}&#34;该格式已停止php将其读作true / false和字符串
答案 1 :(得分:0)
如何运行测试以查看值是否为零。然后将其修改为字符串零而不是?
$template = 'Some text with a {value}';
$data = 0;
if (!$data) {
$data = "0";
}
$template = str_replace('{value}', $data, $template);
答案 2 :(得分:0)
为什么不使用sprintf而不是str_replace?
这样您就可以在字符串模板中设置数据类型。
$template = 'Some text with a %d';
$data = 0;
$result = sprintf($template, $data);
答案 3 :(得分:0)
class Application < ActiveRecord::Base
belongs_to :job
belongs_to :user
scope :new, where(:status => 'New')
scope :reviewed, where(:status => 'Profile Reviewed')
scope :offered, where(:status => 'Offer Given')
scope :accepted, where(:status => 'Offer Accepted')
scope :hired, where(:status => 'Hired')
scope :declined, where(:status => 'Decline')
命令及其朋友按照您的意愿处理格式。
printf
如果您想从软件中将模板转换为printf格式,那也是一种选择。
$template = "Some text with a %.0f\n";
$data = 0;
$output = sprintf($template, $data);
请注意,我使用的是$template = "Some text with a {value}\n";
$data = 0;
$template_fmt = str_replace('{value}', '%.0f', $template);
$output = sprintf($template_fmt, $data);
而不是%.0f
,因为它为您提供了支持更复杂的浮点数的简单进程。要么应该这样做。
答案 4 :(得分:0)
我的变量未显示,不是因为一些错误或配置错误,而是因为仅当变量不是empty()
时才填充模板。
空函数返回true
为0。
用!empty($var)
替换($var !== '' && $var !== null)
解决了这个问题。