kostenloser Webspace werbefrei: lima-city


Notice: Undefined offset:

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    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!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
    round($winddirection / 22.5)
    noch 1 abziehen

    $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
    round
    als Precision 0 angibst.

    Beitrag zuletzt geändert: 3.4.2015 19:39:09 von syberpsace
  4. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    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
  5. 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
    PHP_ROUND_HALF_DOWN
    als Modus, damit du nicht wieder über die Arraygrenzen hienausschießt.

    Kurzversion (q&d):
    $winddirectionname = $winddirectionnames[(int)(round(($winddirection!=360?:0) / 22.5, 0, PHP_ROUND_HALF_DOWN))];
  6. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    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
  7. Argh! Ich sollte echt weniger trinken wenn ich hier im Forum unterwegs bin.

    $winddirection!=360?:0
    ist natürlich schwachsinn. Richtig wäre
    $winddirection!=360?$winddirection:0
  8. Warum nicht einfach $winddirection % 360? Das hat sogar den Vorteil, dass es auch für Werte > 360 funktioniert (361 wird 1, 362 2 etc.).
  9. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    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
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!