Function ago($time) Problem

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

  • Function ago($time) Problem

    Soweit bin ich mit folgendem Code !

    Mein Problem nun ist das ich bei den letzten beiden IF kein true bekomme trotz gefüllter Variable. Die Variable wird mir angezeigt der Zusatz nicht.

    Woran könnte das liegen ?

    PHP-Code:
    <?php

    function ago($time)
    {
       
    $periods = array("Sekunde""Minute""Stunde""Tag""Woche""Monat""Jahr""Jahrzehnt");
       
    $lengths = array("60","60","24","7","4.35","12","10");

       
    $now time();

           
    $difference     $now $time;
           
    $tense         "vor";

       for(
    $j 0$difference >= $lengths[$j] && $j count($lengths)-1$j++) {
           
    $difference /= $lengths[$j];
       }

       
    $difference round($difference);

       if(
    $difference != 1) {
          if( (
    $periods == "Sekunde") || ($periods == "Minute") || ($periods=="Stunde")|| ($periods=="Woche") ) {
           
    $periods[$j] .= "n";
          }

          if( (
    $periods == "Tag") || ($periods == "Jahr") || ($periods=="Jahrzehnt") ) {
          
    $periods[$j] .= "en";   
          }

       }

       return 
    "$tense $difference $periods[$j]";
    }
    ?>
    Vielen Dank.

    Mit freundlichen Grüßen
    Incoming

  • #2
    Was fragst Du ab, einen alten Timestamp?
    Bei mir funktioniert es. Beispiel:

    PHP-Code:
    echo ago("1364895786");  // vor 2 Minute 
    Oder meintest Du, dass nur die jeweils höchste Periode ausgegeben wird?
    Also, dass zum Beispiel bei Minuten keine Sekunden ausgegeben werden?

    So wie die Funktion geschrieben ist, wird der Rest wohl unterschlagen werden, da eine Funktion nur den letzten Wert zurückgeben kann. Eventuell müsstest Du dazu die Perioden in aufeinander aufbauenden Schleifen verschachteln, wobei immer nur der aktuelle Restwert in der kleineren Periode erhalten bleibt. Dann vor der Rückgabe alles miteinander verknüpfen. So in etwa würde ich es zumindest beginnen und es mir zwischendurch noch dreimal anders überlegen.

    Der nächste Gedanke könnte sein, da Dir ja die Differenz in Sekunden vorliegt, diesen Wert gleich durch Sekunden, Minuten, Stunden, Tage usw. zu teilen. Bei der höchsten Periode beginnen und wenn die Teilung keinen Minuswert ergibt, mit dem Restwert die nächste Periode berechnen, dazu bedarf es dann nicht einmal einer Schleife, denke ich zumindest.
    Zuletzt geändert von Melewo; 02.04.2013, 12:55.

    Kommentar


    • #3
      Hi,

      warum arbeitest Du nicht gleich mit PHP: DateTime::diff - Manual ??

      mfg streuner
      Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
      der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

      "Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"

      Kommentar

      Lädt...
      X