【问题标题】:Why won't this function work with "formatted" numbers?为什么此功能不适用于“格式化”数字?
【发布时间】:2013-10-09 11:53:52
【问题描述】:

我有一个功能可以做到这一点......

function coefficient_display($coeff){
    if ($coeff == 1){
        return '';
    } elseif ($coeff == -1){
        return '-';
    } else {
        return $coeff;
    }   
}

似乎,如果你给它一个“格式化”的数字,它就会失败。为什么?

coefficient_display(1200) 给出 1200
coefficient_display('1200') 给出 1200
coefficient_display(1,200) 失败。

【问题讨论】:

  • 因为1,200 不是数字,你是怎么喂这个的?
  • coefficient_display('1,200'); 应该可以工作
  • 那么为什么 coefficient_display('1200') 给出 1200 呢? '1200' 不是字符串吗?
  • coefficient_display(1,200) 表示您正在传递 2 个参数 1200
  • @bansi - 这意味着 $coeff 的值为 1。有道理。所以 OP 可以通过传入 2,200 进行测试,如果它输出 2 你就成功了。

标签: php function


【解决方案1】:

因为这里没有一些“格式化”数字:foo(1,200) 只有 2 个参数 1 和 200。

试试coefficient_display("1,200")coefficient_display("1.200")

【讨论】:

    【解决方案2】:

    这里是对你得到的东西的一些解释。

    coefficient_display('1200')gives 1200.

    PHP 数据类型可以互换,因此 '1200'(string) != 1 或 -1。从而执行 else 部分。

    coefficient_display(1,200) fails.

    这实际上并没有失败,它返回空白字符串。由于第一个参数是 1,if ($coeff == 1) 为真,它执行return ''; 行。第二个参数200 被忽略。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      1,200 不是数字,试试 coefficient_display('1,200') 并将所有 '==' 更改为 '==='

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 2018-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多