Два кода

cold_zero

Registered
Трябва ми код който да съкращава числа примерно, ако имам 1 755 152 да ми го изпише като 1.76M, ако имам 755 152 да ми го изпише като 756K.

Също ми трябва код при който като се вади класиране на топ 10 потребители да ми изписва аз кой съм примерно, ако съм 8-ми да ми изпише Вие сте 8-ми и да не ми вади цялото класиране от 1 до 10...
 
Втория код го направих. По първия код направих да ми изписва M и К съответно за милиони и хиляди. Остана ми само когато имам например 1 755 152 милиона да ми го изпише като 1.76M, така и с хилядите 755 152 да ми го изпише като 756K.
 
Ето този код го бях писал преди време.
Код:
<?php
function preobr($var) {
    $i=0;
    while (floor($var) > 0) {
        $var = $var / 1024;
        $i++;
    }
    $var = $var * 1024;
    if ($i == 1 || $var == 0) { $type = "B"; }
    if ($i == 2) { $type = "KB"; }
    if ($i == 3) { $type = "MB"; }
    if ($i == 4) { $type = "GB"; }
    if ($i == 5) { $type = "TB"; }
    $var = round($var,2);
    return $var." ".$type;
}

echo preobr(1755152);
?>
 
Мерси :) Преработих го както трябва и всичко е на 6.

+1


Как да го направя да работи и при отрицателни стойности?
 
Как така с отрицателни стойности?
До колкото знам няма файл с отрицателен размер.
 
Емм аз съм уточнил, че става дума за числа не за стойности на файлове и съм написал, че M е съкращения от милиони, а K от хиляди... Карай аз си написах някакъв код :p
 
Хаха, аз пък си помислих че става въпрос за големината на файл.
Извинявам се :)
 
Амм, ето леко го преработих и се получи:
Код:
<?php
function preobr($var) {
	$var = str_replace(" ", "", $var);
    $i=0;
    while (floor($var) > 0 && $i < 3) {
        $var /= 1000;
        $i++;
    }
    $var *= 1000;
    if ($i == 2) { $type = "K"; }
    if ($i >= 3) { $type = "M"; }
    $var = round($var, 2);
    return trim($var." ".$type);
}

echo preobr("1 578 755");
?>

Просто, да си заслужа точката :p
 

Горе