PHP:sprintf - 没有加号的零

Posted

技术标签:

【中文标题】PHP:sprintf - 没有加号的零【英文标题】:PHP: sprintf - zero without plus sign 【发布时间】:2017-09-08 05:14:05 【问题描述】:

我试图在负数之前获得减号,在正数之前获得加号。我正在使用 sprintf。

sprintf("%+d",$voteCount)

这一切正常,除了零。我不想在零之前加号。 如何让它显示所有正数的加号,但不显示零符号?

【问题讨论】:

不重复!!!请重新打开它。浏览问题的最后一段。 这是您解决问题的替代方案... echo ($voteCount === 0 ? 0 : sprintf("%+d",$voteCount)); 使用:- php.net/manual/en/function.gmp-sign.php 通过在 php.ini 文件中禁用 extension=php_gmp.so 谢谢@AlivetoDie:这对我来说是新的 @RahulMeshram 您可以将其添加到注释部分的答案中 【参考方案1】:

没有直接的方法可以实现这一点,因为 %d 只会考虑正负号。

但是是的,有以下替代方法可以实现这一点,

echo ($voteCount === 0 ? 0 : sprintf("%+d",$voteCount));

这应该可以解决您的问题。

编辑(根据 AliveToDie 的建议):

您可以使用gmp_sign 来做同样的事情。

这是它的参考示例。

// positive
echo gmp_sign("500") . "\n";

// negative
echo gmp_sign("-500") . "\n";

// zero
echo gmp_sign("0") . "\n";

同样,你需要在 php.ini 中启用扩展

extension=php_gmp.so

【讨论】:

以上是关于PHP:sprintf - 没有加号的零的主要内容,如果未能解决你的问题,请参考以下文章

C18 sprintf()给出语法错误[重复]

字符串中的零填充数字

php sprintf()

php [sprintf] #php技巧

PHP 格式化字符串sprintf()

PHP sprintf() 函数