Notice: Undefined offset:
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abziehen
array
code
ersten blick
falsche werte code
folgende fehlermeldung
forum
index
kleine randnotiz
kurzversion
nord
norden
nordwest
offset
ost
sparen
trinken
vorteil
weglassen
west
-
Hi,
brauch noch noch eure hilfe.
Bekomme folgende Fehlermeldung. Die werte werden in Grad übergeben z.b. 90 oder 360.
Notice: Undefined offset: 16 in /home/webpages/lima-city/daniel/html/xxx/current.php on line 384
$winddirectionname = $winddirectionnames[(int)(round($winddirection / 22.5))];
function weather_wind_direction_name ($winddirection) { $winddirectionnames = array("N", "NNO", "NO", "ONO", "O", "OSO", "SO", "SSO", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"); $winddirectionname = $winddirectionnames[(int)(round($winddirection / 22.5))]; return $winddirectionname; }
Danke!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Arrays sind 0-Basiert, d.h. der erste Wert (in deinem Fall "N") hat den Index 0.
Damit deine Code also funktioniert musst du einfach von dem Ergebnis aus
noch 1 abziehenround($winddirection / 22.5)
$winddirectionname = $winddirectionnames[(int)(round($winddirection / 22.5)-1)];
Edit: kleine Randnotiz: den Typecast auf int solltest du eigentlich weglassen können, wen du für
als Precision 0 angibst.round
Beitrag zuletzt geändert: 3.4.2015 19:39:09 von syberpsace -
Wenn ich jedoch -1 eingebe bekomme ich falsche Werte..
NNW
$h->weather_wind_direction_name(360)
function weather_wind_direction_name ($winddirection) { $winddirectionnames = array("N", "NNO", "NO", "ONO", "O", "OSO", "SO", "SSO", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"); $winddirectionname = $winddirectionnames[(int)(round($winddirection / 22.5)-1)]; return $winddirectionname; }
Da muss also noch ein anderer Fehler drin sein.. :/ weil 360° => Norden -
360° ist in deinem Fall ein Spezialwert. Wenn du annimmst 360° = 0° dann stimmt die rechnung und du kannst dir die -1 sparen. Dann brauchst du aber
als Modus, damit du nicht wieder über die Arraygrenzen hienausschießt.PHP_ROUND_HALF_DOWN
Kurzversion (q&d):
$winddirectionname = $winddirectionnames[(int)(round(($winddirection!=360?:0) / 22.5, 0, PHP_ROUND_HALF_DOWN))];
-
Hi,
habe gedacht es funktioniert, jedoch bekomme ich jetzt immer "Nord" angezeigt. Egal welchen Wert ich habe... :(
Beitrag zuletzt geändert: 3.4.2015 21:07:25 von daniel -
Warum nicht einfach $winddirection % 360? Das hat sogar den Vorteil, dass es auch für Werte > 360 funktioniert (361 wird 1, 362 2 etc.).
-
Hi,
habe es ein wenig verändert.
function weather_wind_direction_name_long_ ($winddirection) { $winddirectionnames = array("Nord", "Nordnordost", "Nordost", "Ostnordost", "Ost", "Ostsüdost", "Südost", "Südsüdost", "Süd", "Südsüdwest", "Südwest", "Westsüdwest", "West", "Westnordwest", "Nordwest", "Nordnordwest"); $winddirectionname = $winddirectionnames[(int)(round(($winddirection<=337.5?$winddirection:0) / 22.5, 0, PHP_ROUND_HALF_DOWN))]; return $winddirectionname; }
da ich sonst bei einem Wert von 340° wieder die Fehlermeldung komme. :) So funktioniert es auf den ersten Blick.
Ich bedanke mich!
PS: So lange du nicht zuviel trinkst ist alles gut. :D -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage