Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示零_Php_Output_Zero - Fatal编程技术网

Php 显示零

Php 显示零,php,output,zero,Php,Output,Zero,我正在使用str_replace填充一个模板,其中一些值是数字。 当一个数字为0时,PHP认为它是假的,什么也不写 我尝试了SO和web上找到的所有解决方案: intval$myZeroVar floatval$myZeroVar strval$myZeroVar 字符串$myZeroVar .$myZeroVar 随机测试使用数字格式,sprintf,str\u-pad。。。 这些都不起作用 显示它的唯一方法是将$myZeroVar与空间$myZeroVar连接起来。“”。 但是如果我不想要这

我正在使用str_replace填充一个模板,其中一些值是数字。 当一个数字为0时,PHP认为它是假的,什么也不写

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

intval$myZeroVar floatval$myZeroVar strval$myZeroVar 字符串$myZeroVar .$myZeroVar 随机测试使用数字格式,sprintf,str\u-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次

试试这样的东西

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

对我来说{$var}这种格式已经停止了php将其读取为真/假,而改为字符串

运行一个测试看看值是否为零。然后将其修改为字符串零

$template = 'Some text with a {value}';
$data = 0;
if (!$data) {
  $data = "0";
}
$template = str_replace('{value}', $data, $template);
你为什么不用str_替换

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

$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,因为它为您提供了一个支持更复杂的浮点数的简单过程。两者都可以。

我的变量没有显示,不是因为某些错误或错误的配置,而是因为只有当变量不为空时,模板才被填充

空函数为0返回true


替换!空$var和$var!=&&$var!==null解决了这个问题。

不是每种语言都认为0=false吗?你能添加更多的代码,你得到什么,你期待什么,不知道你想做什么…有时我讨厌这种愚蠢的语言那是一个工匠把责任归咎于他的工具。这不是工具的错。我从你的问题中删除了那个咆哮。@鸣人:他想将0声明为字符串,而不是表示为false的int。在我的easyPHP dev服务器上,字符串$myZeroVar正在工作,var_dump'0'也在工作。我认为它来自您的配置。它也可能是您正在使用的模板系统,它在输出值之前进行惰性比较,并且由于惰性比较会将null、0、false计算为false,这很可能就是所发生的情况。发布您的代码,因此,我们可以看到正在发生的事情,有时第二双眼睛可以分辨出这是一件愚蠢的事情。为什么OP要尝试这个呢?请解释一下你做了什么,以及你为什么这样做,不仅是为了OP,也是为了SO的未来访客。很好的尝试,但同样的结果:sprintf是我的测试之一:我只是测试了错误的地方…:谢谢我的朋友,但请不要再浪费时间了。由空。。。我不知道这样的线程该怎么办?@FC'。。很高兴你解决了!如果答案中暗示了您的解决方案,请选中该答案。如果不是,而且你的问题不知怎么地漏掉了,在你的问题中澄清,然后发布你自己的答案并选择它。没有人会因此得到最好的安塞尔分数,但它将清楚地确定问题和解决方案是什么,这一点更为重要。