Tommi: for($i=1900;$i <= 2013;$i++)

Ich möchte gerne einen Zahlenstran erstellen von 1900 bis 2013.

for($i=1900;$i <= 2013;$i++)
{
echo $i.'<br/>';
}

Aber eigentlich würde ich gerne die Zahlenreihe nicht aufwärts sondern abwärts ausgeben. und was kann ich statt 2013 nehmen, so das es auch 2014 inklusive der 2014 funktioniert?

für eure Hilfe bin ich jetzt schon mal dankbar

Tommi

  1. Moin!

    Ich möchte gerne einen Zahlenstran erstellen von 1900 bis 2013.

    for($i=1900;$i <= 2013;$i++)
    {
    echo $i.'<br/>';
    }

    Soweit ist ja schonmal alles klar.

    Aber eigentlich würde ich gerne die Zahlenreihe nicht aufwärts sondern abwärts ausgeben. und was kann ich statt 2013 nehmen, so das es auch 2014 inklusive der 2014 funktioniert?

    Da frag ich mich gerade 2 Dinge: Verstehe ich dich nicht? Oder trollst Du nur etwas rum?

    Abwaerts waere ($i=2013;$i >= 1900;$i--)

    Wnd was schreibt man wohl wenn man nicht 2013 sondern 2014 haben moechte?
    Tipp: NICHT 2015... -.-

    --
    Signaturen sind blöd!
    Entlastet die Tierheime! Hundeklappen fuer Chinarestaurants!
  2. Aber eigentlich würde ich gerne die Zahlenreihe nicht aufwärts sondern abwärts ausgeben.

    Vertausche die Grenzen und nutze das Dekrement $i-- statt.

    und was kann ich statt 2013 nehmen, so das es auch 2014 inklusive der 2014 funktioniert?

    date("Y");

    Cheers,
    Baba

    1. Moin!

      und was kann ich statt 2013 nehmen, so das es auch 2014 inklusive der 2014 funktioniert?
      date("Y");

      Ah! Mit der Antwort macht die Frage ploetzlich Sinn! Danke!

      --
      Signaturen sind blöd!
      Entlastet die Tierheime! Hundeklappen fuer Chinarestaurants!
  3. @@Tommi:

    nuqneH

    Aber eigentlich würde ich gerne die Zahlenreihe nicht aufwärts sondern abwärts ausgeben.

    Dann fängst du eben bei der hohen Zahl an und zählst rückwärts bis zur 1900.

    und was kann ich statt 2013 nehmen, so das es auch 2014 inklusive der 2014 funktioniert?

    date() mit entsprechendem Formatstring; mit intval() den String in ein Integer umwandeln.

    für eure Hilfe bin ich jetzt schon mal dankbar

    Tommi

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. Tach!

      date() mit entsprechendem Formatstring; mit intval() den String in ein Integer umwandeln.

      intval() ist nicht notwendig, das macht PHP selbst, wenn es mit Zahlen in Strings rechnen soll.

      dedlfix.

      1. date() mit entsprechendem Formatstring; mit intval() den String in ein Integer umwandeln.

        intval() ist nicht notwendig, das macht PHP selbst, wenn es mit Zahlen in Strings rechnen soll.

        Sofern die Zahlen wie Dezimalzahlen und keine Grenze überschreiten (32- bzw. 64-Bit-Überlauf beachten) aussehen ja :)

        In diesem Kontext sollte es also keine Probleme geben.

        1. Tach!

          intval() ist nicht notwendig, das macht PHP selbst, wenn es mit Zahlen in Strings rechnen soll.
          Sofern die Zahlen wie Dezimalzahlen und keine Grenze überschreiten (32- bzw. 64-Bit-Überlauf beachten) aussehen ja :)

          intval() kann auch nur denselben String interpretieren, den die automatische Typumwandlung zu Gesicht bekommt. Es kann lediglich explizit eine Zahlenbasis berücksichtigen. Aber gegen 32/64-Bit-Überläufe ist es auch machtlos.

          dedlfix.

  4. Hi,

    Ich möchte gerne einen Zahlenstran erstellen von 1900 bis 2013.

    Weil es eigentlich viel schöner ist, wollte ich es mal zeigen:

      
    for ($stop = new DateTime('1900-01-01'),  
         $i = new DateTime(),  
         $year = DateInterval::createFromDateString('1 year');  
         $i >= $stop;  
         $i->sub($year)  
        ) {  
    	echo $i->format('Y'), "\n";  
    }  
    
    

    Dann hat man in $i schon ein DateTime-Objekt.

    Bis die Tage,
    Matti

    1. Ich möchte gerne einen Zahlenstran erstellen von 1900 bis 2013.

      Weil es eigentlich viel schöner ist, wollte ich es mal zeigen:

      for ($stop = new DateTime('1900-01-01'),
           $i = new DateTime(),
           $year = DateInterval::createFromDateString('1 year');
           $i >= $stop;
           $i->sub($year)
          ) {
      echo $i->format('Y'), "\n";
      }

      
      >   
      > Dann hat man in $i schon ein [DateTime](http://www.php.net/manual/de/class.datetime.php)-Objekt.  
        
      Ist das nicht ein wenig zuviel overhead?  
        
      Wie [Baba vorgeschlagen hat](https://forum.selfhtml.org/?t=213762&m=1461947)  
        
      ~~~php
        
      for($year = date('Y'); $year >= 1900; $year--) {  
           echo "$year\n";  
      }  
      
      

      sieht für mich in Anbetracht der 'Aufgabenstellung' sauberer aus, weil es einfach schon mal von der Masse an Code weniger ist und nicht 3 Objekte benötigt.

      MfG
      bubble

      --
      If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
      1. Ist das nicht ein wenig zuviel overhead?

        Depends. Ich bin ein Freund der Philosophie, in erster Linie für den Programmierer zu programmieren. Entwickler kommunizieren durch ihren Code. Mit diesem Ziel vor Augen, finde ich den Code von Matti hervorragend. Er ist schlicht und einfach sprechend. Auch im Sinne der Abstraktion und die damit einhergehende Skalierbarkeit finde ich den Code preisverdächtig.

        Spielt Leistung eine übergeordnete Rolle, ist vermutlich eine simplere Vorgehensweise vorzuziehen.

        1. @@1UnitedPower:

          nuqneH

          Ich bin ein Freund der Philosophie, in erster Linie für den Programmierer zu programmieren.

          “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
          —Martin Fowler

          Qapla'

          --
          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
          1. Okay, das geht sogar in meinen Dickschädel, irgendwie hab ich daran nicht gedacht.

            MfG
            bubble

            --
            If "god" had intended us to drink beer, he would have given us stomachs. - David Daye