我目前的代码:
public function transform_wind_direction_to_name($winddirection)
{
$compass = array('N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW');
$winddirectionname = $compass[round( ($winddirection - 11.25) / 22.5)];
return $winddirectionname;
}
当角度为360度时,我收到此错误:
A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 16
答案 0 :(得分:6)
对于任何转向数组索引的$ winddirection>你可能会得到错误。 16或舍入到数组索引-1。要解决> 360例,在访问数组之前使用模运算符(%) - round( ($winddirection % 360) / 22.5)
答案 1 :(得分:1)
您似乎应该使用floor()
而不是round()
:
(360 - 11.25) / 22.5) == 15.5
round(15.5) == 16
floor(15.5) == 15
或者检查一下:
if( $winddirection >= 360 ) { $winddirection = $winddirection % 360; }
答案 2 :(得分:0)
您的数组只有0-15个元素。不知何故,你的函数试图读取第16个元素。只需将它在360度标记处回滚到零。无论如何,它们的意思相同。
答案 3 :(得分:0)
你的数组包含16个字符串,但由于它们是从0开始计算的,所以最后一个字符串的数字是15.所以当你使用360作为参数时,函数返回$ compass [16]并且不存在。