我在网站上找到了此代码,可将celcius转换为farentheit和kelvin。 但是我看不懂里面的一行。
function conv_temp($val , $type_val , $type_wanted) {
$tab_val = array("C", "F", "K");
if (!(in_array($type_val, $tab_val) && in_array($type_wanted,$tab_val)))
return 0;
switch ($type_val) {
case "C" : // degrees Celsius
switch ($type_wanted) {
case "C" :
return $val;
case "F" :
return ($val * 9 / 5 + 32);
case "K" :
return ($val + 273.16);
case "F" : // degrees Fahrenheit
switch ($type_wanted) {
case "C" :
return (($val - 32) * 5 / 9);
case "F" :
return $val;
case "K" :
return ((($val - 32) * 5 / 9) + 273.16);
case "K" : // degrees Kelvin
switch ($type_wanted) {
case "C" :
return ($val - 273.16);
case "F" :
return (($val - 273.16) * 9 / 5 + 32);
case "K" :
return $val;
}
}
}
}
}
echo conv_temp(5,'C','F')."\n";
?>;
in_array
为什么必须return 0
?
我删除了这一行,该功能仍然有效。
答案 0 :(得分:0)
这是为了防止用户尝试使用不存在的温度符号调用函数的情况:
// EXAMPLE 1
echo conv_temp(5,'C','F')."\n";
// Output: 41
// EXAMPLE 2
echo conv_temp(5,'C','J')."\n";
// Output: 0
如果删除测试并再次运行示例2,则不会获得任何输出:
echo conv_temp(5,'C','J')."\n";
// Output:
如果0
被用作注释中建议的错误代码,我想这不是最好的主意。如果输入的温度实际上转换为0怎么办? :
$temp = conv_temp(-273.16,'C','K');
if ($temp == 0) {
echo "Conversion failed";
} else {
echo "$temp";
}
// Output: Conversion failed
答案 1 :(得分:0)
return 0
用于确保只有在switch
数组中使用with的情况下,$tab_val
的情况才起作用。
$tab_val = array("C", "F", "K");
因此,如果您使用C
,F
或K
以外的任何符号,该函数将立即返回0,而无需执行铰孔代码。
因此,在您输入无效的类型之前,您的代码无需该行即可工作。
如果输入无效的类型return 0
,则输出结果为0,否则将为空白。
即使您使用c
,k
或f
而不是C
,K
或F
,由于自值区分大小写
echo conv_temp(5,'C','f')."\n";
由于我们使用f
而不是F