首页 > 解决方案 > 在 PHP 中打印带有正确 (+/-) 符号的数字序列

问题描述

我需要按顺序打印一些数字,它们之间有 + 和 - 。但是,我事先不知道哪个数字是正数,哪个是负数。目前,我像这样回应他们:

echo "$a + $b + $c + $d + $e + $f";

假设$ato的值$f都是正数。我会得到类似的东西:5 + 10 + 12 + 18 + 9 + 7

但是,如果某些值是负数,我会得到类似5 + -10 + 12 + -18 + 9 + - 7. 在这种情况下,理想的输出是5 - 10 + 12 - 18 + 9 - 7.

请不要说我不想计算加法或减法的最终结果。我只想用正确的标志将它全部打印在网页上。

我可以通过编写 6 个嵌套if()块来做到这一点,但这似乎需要做很多工作,而且每次都这样做很容易出错。有什么聪明的办法可以输出正确的符号。

标签: phpstring-formatting

解决方案


最简单的方法是更正最终字符串中的运算符外观:

$s = '5 + -10 + 12 + -18 + 9 + - 7'; // result of interpolation or concatenation
$s = str_replace('+ -', '- ', $s);
// => "5 - 10 + 12 - 18 + 9 -  7"

如果这对您来说是可能的,那么这将是尽可能快的——没有循环(在 php 中),没有条件一次处理每个数字。如果你无论如何都要循环,我会推荐@Phils 建议array_reduce——功能风格的php——适应你的需要。


推荐阅读