Probleme mit Simpler Addition

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit Simpler Addition

    Tach...
    folgender Code:

    PHP-Code:
    function getSeason($date)
    {
        
    $parts=explode('.',$date,3);
        
    $year=intval($parts[2]);
        
    $month=intval($parts[1]);
        
    $day=intval($parts[0]);
        
    $season '';
        if(
    $month>=6)
        {
            if(
    $day>=25 OR $month>6)
            {
                
    $season $year '/' $year+1;            
            }
            else
            {
                
    $season $year-'/' $year;
            }
            
        }
        else
        {
            
    $season $year-'/' $year;
        }

        return 
    $season;

    Wenn ich diese Funktion mit getSeason('20.02.2009') aufrufe, funzt alles. Es wird 2008/2009 ausgegeben. Sobald ich einen Wert über dem 25.06.2009 eingebe, soll die Funktion quasi 2009/2010 ausgeben. Tut sie aber nicht. Sie gibt nur 2010 aus. Sowohl über CLI als auch über Webbrowser.

    Dann hab ich mal testweise das +1 in der Zeile entfern, und siehe da, es wird 2009/2009 ausgegeben. Ich glaube, ich habe einen PHP-Bug gefunden. Allerdings sehr doof für mich..

    Greetz!

  • #2
    Oha, kaum schicke ich das Posting ab, kommt mir der entscheidene Geistesblitz. Ich hätte $year+1 in klammern Packen müssen, da der PHP-Parser wohl irgendwie bisschen komisch parst

    Edit: Sorry, habe hier erst keinen Edit-Button gefunden. Kommt nich wieder vor.

    Kommentar


    • #3
      Original geschrieben von DerSchonWieder
      Ich hätte $year+1 in klammern Packen müssen, da der PHP-Parser wohl irgendwie bisschen komisch parst
      http://www.php.net/manual/en/languag...precedence.php

      Die Operatoren + und . haben die gleiche Rangstufe, werden jedoch von links nach rechts abgearbeitet.

      Das heisst, du hast hier erst mal 2009.'/'.2009, das ergibt den Text '2009/2009'. Da soll jetzt eins draufaddiert werden, dazu muss es erst implizit in eine Zahl umgewandelt werden, also 2009. Plus 1 ergibt - 2010.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar

      Lädt...
      X