Редактиране на difference

Ev0luti0N

Registered
PHP:
function difference($time) {
        $time = time() - $time;

        $tokens = array (
            31536000 => 'год.',
            2592000 => 'месец/a',
            604800 => 'сед.',
            86400 => 'ден/дни',
            3600 => 'час/a',
            60 => 'мин.',
            1 => 'сек.'
        );

        foreach($tokens as $unit => $text) {
            if($time < $unit) continue;
            $numberOfUnits = floor($time/$unit);
            return $numberOfUnits.' '.$text;
        }
    }
Ползвам този difference, ако можете да ми кажете може ли да стане по някакъв начин, че ако е 1 да покзва сек., мин., час, ден, сед., месец, год., а когато е 2 или нагоре да покзва сек., мин., часа, дни, сед., месеца, год.
 
Здрасти,

не те разбрах много добре дали искаш да определиш единствено и множествено число или искаш да има повече информация примерно -
0 год., 0 месецa, 0 сед., 0 дни, 3 часa, 20 мин., 0 сек.
и затова ти направих тези две функции

PHP:
<?php
function difference2($time)
{
    $time = time() - $time;

    $tokens = array (
        31536000 => 'год.',
        2592000 => 'месец/месецa',
        604800 => 'сед.',
        86400 => 'ден/дни',
        3600 => 'час/часa',
        60 => 'мин.',
        1 => 'сек.'
    );

    $output = array();

    foreach($tokens as $unit => $text) {
        $numberOfUnits = intval($time / $unit);
        if (strstr($text, '/') !== false) {
            if ($numberOfUnits == 1) {
                list($text,) = explode('/', $text);
            } else {
                list(,$text) = explode('/', $text);
            }
        }
        $output[] = $numberOfUnits . " " . $text;
        $time -= $numberOfUnits * $unit;
    }

    return implode(', ', $output);
}

function difference($time)
{
    $time = time() - $time;

    $tokens = array (
        31536000 => 'год.',
        2592000 => 'месец/месецa',
        604800 => 'сед.',
        86400 => 'ден/дни',
        3600 => 'час/часa',
        60 => 'мин.',
        1 => 'сек.'
    );

    foreach($tokens as $unit => $text) {
        if ($time < $unit) continue;
        $numberOfUnits = floor($time / $unit);
        if (strstr($text, '/') !== false) {
            if ($numberOfUnits == 1) {
                list($text,) = explode('/', $text);
            } else {
                list(,$text) = explode('/', $text);
            }
        }
        return $numberOfUnits . '  ' . $text;
    }
}

echo difference(time() - 12000) . '<br />';
echo difference2(time() - 12000) . '<br />';
echo difference(time() - 6000) . '<br />';
echo difference2(time() - 6000);
?>
 

Back
Горе