PHP5:风度名称

时间:2014-07-24 16:33:52

标签: php

我目前的代码:

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

4 个答案:

答案 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]并且不存在。