2014-12-06 118 views
2

我一直在做一个华氏温度摄氏(反之亦然)计算器。它所有的工作都很好,但是当我试图计算32华氏度到摄氏温度时,它应该是0,但是什么都不显示。我不明白为什么它不会回显0值。为什么PHP不打印0值?

下面是一些代码:

<?php 
// Celsius and Fahrenheit Converter 
// Programmed by Clyde Cammarata 

$error = '<font color="red">Error.</font>'; 

function tempconvert($temptype, $givenvalue){ 
    if ($temptype == 'fahrenheit') { 
     $celsius = 5/9*($givenvalue-32); 
     echo $celsius; 
    } 

    elseif ($temptype == 'celsius') { 
     $fahrenheit = $givenvalue*9/5+32; 
     echo $fahrenheit; 
    } 
    else { 
     die($error); 
     exit(); 

    } 
} 

tempconvert('fahrenheit', '50'); 

?> 
+3

它为我打印0。 'larry $ php temp.php 0' 。但是你不需要引用临时值。 – 2014-12-06 02:54:35

+0

你会得到什么错误?如果将其更改为(5/9)*($ givenvalue -32),会发生什么问题如果操作顺序给您的除零误差。 – Doon 2014-12-06 02:56:50

+0

你有没有试过'echo(string)$ celsius;'? – Sablefoste 2014-12-06 02:57:58

回答

-2

看起来像$celcius具有值0(整型)不是 “0”(字符串类型),所以它不会呼应因为PHP读取为假(0 = false,则1 =真)。

试着改变你的代码

echo $celcius; 

echo $celcius.""; 

echo (string) $celcius; 

将您的变量转换为字符串

+4

不,'echo(float)0;'只会输出'0' – Rangad 2014-12-06 03:07:17

+1

如果你不确定,你应该在发布之前尝试一下 - php -r'echo 0;'并看看你得到了什么。我的屏幕上印有“0”。 Php自动将数字转换为字符串以回显它们。 – Andras 2014-12-06 03:09:25

1

当它印什么,你可以有我有一个错字n“诱惑”“华氏”?

该代码与temptype匹配,如果它不是F或C,则会出错。除了$ error没有被声明为global $error;,它使用了一个本地的未定义变量(你不能启用会警告你的通知),而未定义打印为“”空字符串。

0

die()等价于exit()。无论是作为一个整数值为0的单参数函数,都向PHP表明,无论您刚刚做了哪些操作都是成功的。对于你的函数,如果你想要输出值0,你会想使用echo或print,而不是die()或exit()。

此外,考虑更新您的函数返回值,而不是直接输出它。它会使你的代码更加可重用。

约在这里的状态代码更多信息:

http://php.net/manual/en/function.exit.php

0
echo (float) $celcius; 

这将做的工作适合你。

相关问题