【问题标题】:Quickly add + to positive strings [PHP]快速将 + 添加到正字符串 [PHP]
【发布时间】:2010-01-05 12:34:16
【问题描述】:

嘿,有没有一个PHP函数可以在正字符串中添加“+”?

function(4) // returns +4
function(1.0) // returns +1.0
function(-1) // returns -1
function(0) // returns +0

谢谢

编辑:想要获取和返回字符串。

【问题讨论】:

  • 我不认为你能完全理解这一点,因为 1.0 只是一个普通的 1,PHP 没有理由记住它的存在。如果你想让它工作,你必须将它作为一个字符串发送,但由于鸭子类型,函数的代码不必不同。
  • 这是干什么用的?这决定了返回值是否应该是一个字符串。
  • 正如所指出的,它不需要整数。它实际上需要一个字符串。即“0.00”、“1.34”。
  • @skilldrick - 发送了一堆字符串。所有负值都已作为负数发送,例如“-4.00”。然而,所有的正面都没有“+”发送。我想用“+”返回正数。

标签: php integer


【解决方案1】:
$i = 3;
printf('%+d ', $i);

$i = -3;
printf('%+d ', $i);

打印+3 -3(如果需要,也可以使用sprintf()

【讨论】:

  • 如果值是浮点数,你需要一个不同的行。
【解决方案2】:

您可以将 (s)printf 与以下内容一起使用:

$number = sprintf('%+f', $number);
// "-0"  => +0.000000
// "1.2" => +1.200000

function formatPositive($number)
{
    return ($number > 0) ? "+$number" : $number;
    // "0"   => "0"
    // "-0"  => "-0"
    // "1.2" => "+1.2"
}

function formatPositive($number)
{
    switch(true) {
        case !is_numeric($number): // "Beer" => "NaN"
            $number = 'NaN'; 
            break;
        case $number == 0: // "-0" = "±0"
            $number "±0";
            break;
        case $number > 0: // "1.23" => "+1.23" 
            $number = "+$number";
            break;
        default:  // "-1.23" => "-1.23" 
            break;
    }
    return "$number";
}

【讨论】:

  • 关闭,但应该是>=,因为他想让它说+0。另外,三元运算符的第二部分不应该是"$number",因此该函数始终返回String,而不是正数的字符串和负数的整数? (哦,还有 +1 用于使用三元形式。看起来很棒)
  • 发送“无”返回“+”
  • @Doug 零不是正数,所以它不应该返回+恕我直言。如果有的话,它应该有±。由于 PHP 会根据需要自动进行类型转换,因此我将其留给 OP 来决定返回类型。
  • @dotty:因为你传递了一个字符串。
  • 如果 $number 为 -0(如由 ceil(-.7)round(-.2) 返回),第一个解决方案返回“+0.000000”,第二个返回“-0”,第三个返回“±-0”。
【解决方案3】:
sprintf("%+d", 5);    # should give +5
sprintf("%+d", -5);   # should give -5

快速参考:http://www.php.net/sprintf

【讨论】:

    【解决方案4】:

    sprintf 的 PHP 语言参考建议将“%+d”作为正符号整数的格式说明符。

    【讨论】:

      【解决方案5】:

      自制功能

      function make_positive($int){
          if($int >= 0){
              return "+".$int;
          }else{
              return $int;
          }
      }
      

      PHP 有自己的吗?

      编辑:更改了函数名称。

      【讨论】:

      • 我看到的唯一问题是,如果它是正数,你的函数会返回一个字符串,如果它是负数,它会返回整数。它可能应该返回一个一致的类型,对吧?
      • 另外,一个名为 is_foo 的函数建议它应该返回一个 boolean 值。
      • make_positive 也是一个坏名字,因为这意味着它返回的是绝对值。 “add_sign”怎么样
      猜你喜欢
      • 2016-11-27
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多