【问题标题】:Weird results when echo "string" . function()echo "string" 时出现奇怪的结果。功能()
【发布时间】:2021-08-15 01:05:43
【问题描述】:

我有一个添加美元符号并将数字格式化为两位小数的函数。就像廉价的货币兑换一样。

function money($num){
    echo "$" . number_format($num , 2 , "." , ",");
  }

然后我回显一个这样的字符串:

echo "Your new sun-total is: " . money($subtotal);

我明白了:

$25.75您的新小计是:

任何见解将不胜感激。谢谢。

【问题讨论】:

标签: php function echo


【解决方案1】:

这一行:

echo "Your new sun-total is: " . money($subtotal);

调用money() 函数,并在回显之前将结果附加到文本中。

您的money() 函数会在返回之前回显格式化的数字,因此您首先会看到它。 money() 不返回任何内容,因此您的初始行会回显没有附加任何内容的文本。

像这样更改您的 money() 函数:

function money($num){
    return "$" . number_format($num , 2 , "." , ",");
  }

【讨论】:

    【解决方案2】:

    我认为您混淆了 echo 关键字和 return 关键字。

    回显一个值将从程序中输出。这类似于在其他语言中打印值。返回一个值将设置函数调用的返回值并退出函数,这就是你想要的。

    在获取文本之前获取美元金额的原因是因为您在调用函数时回显了该值。之后,由于您没有指定返回值,PHP 将在您的函数结束时自动返回任何内容。然后它将"Your new sun-total is: " 与一个空字符串连接起来并回显。

    您可以通过将 money 函数重写为如下所示来解决此问题:

    function money($num){
      return "$" . number_format($num , 2 , "." , ",");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2018-06-27
      • 2017-10-30
      • 2019-09-22
      • 2015-08-05
      相关资源
      最近更新 更多