online seit

PHP:
function tellSeconds($NumberOfSeconds)
{
// [...]
// geht $time_map von oben nach unten durch
// $k enthaelt z. B. 'Jahre', $v z. B. '31536000'
// (31536000 sekunden sind ein jahr) 
    foreach ($time_map as $k => $v) {
// ist der uebergebene timestamp kleiner als die in $v stehende zahl oder 0,
// ueberspringe den schleifendurchlauf
        if ($SecondsLeft < $v || $SecondsLeft == 0) {
                continue;
        } else {
// ansonsten speicher in $amount wie oft die in $v stehende zahl in den timestamp passt
                $amount = floor($SecondsLeft/ $v);
// je nach dem, wie oft $v in $SecondsLeft passt, ueberschreibe $SecondsLeft mit den restwert
// (siehe dazu "modulo", ich will keine halbe doku schreiben ;) )
                    $SecondsLeft = $SecondsLeft % $v;

// ist $amount 1, schneide den letzten buchstaben von $k weg und speichere es in $label
            $label = ($amount>1)
                ? $k
                : substr($k, 0, -1); // aus "Jahre" wird "Jahr", aus "Sekunden" wird "Sekunde" etc.

// speicher $label und $amount als string in $stack[]
// z. B. "<strong>2</strong> Jahre"
                    $stack[] = sprintf('<strong>%s</strong> %s', $amount, $label);
        }
    }
// die anzahl der in $stack geschriebenen eintraege int $cnt speichern
    $cnt = count($stack);

// wenn $cnt mindestens einen eintrag hat und somit nicht leer is
    if ($cnt > 1){
// den letzten eintrag von $stack in $tmp1, bzw. $tmp2 speichern
        $tmp1 = array_pop($stack);
        $tmp2 = array_pop($stack);
// $tmp1 und $tmp zwei als string wieder in $stack anfuegen
        array_push ($stack, $tmp2 . ' und '.$tmp1);
    };
// alle eintraege in $stack durch komma getrennt als string in $result speichern
// vielleicht sagt dir die funktion 'implode' was, 'join' ist lediglich ein alias fuer diese
// beide machen somit das selbe
    $result = join (', ', $stack);
// und $result noch zurueck geben
    return $result;
}
Sollte so halbwegs passen.. ;)
 
Zurück