我在一个网站上找到了这段代码,可以将摄氏度转换为华氏度和开尔文。但是我看不懂里面的一行。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?我删除了这一行,该功能仍然有效。
2 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
这return 0
是为了确保switch
仅当您在$tab_val
数组中使用值时该案例才有效。
$tab_val = array("C", "F", "K");
因此,如果您使用 ,以外的任何符号C
,函数将立即返回 0,而不执行扩孔代码。F
K
因此,您的代码将在没有该行的情况下运行,直到您输入无效类型。
如果输入无效类型return 0
则输出结果为0,否则为空。
即使您使用c
, k
orf
而不是C
, K
orF
结果也将为 0,因为值区分大小写
echo conv_temp(5,'C','f')."\n";
上面代码的输出将为 0,因为我们使用f
了而不是F
HUWWW
TA贡献1874条经验 获得超12个赞
这是为了防止用户尝试使用不存在的温度符号调用函数的情况:
// 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
- 2 回答
- 0 关注
- 109 浏览
添加回答
举报
0/150
提交
取消