2014-12-06 114 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; 

這將做的工作適合你。

相關問題