2017-03-06 6 views
0

Was macht dieser Code? Ich kann die While-Schleife hauptsächlich nicht verstehen! kann vor allem nicht verstehen $ total--Wie funktioniert dieser Code richtig?

function getNiceFileSize($file, $digits = 2) 
{ 
    if(is_file($file)){ 
     $filePath = $file; 
     if(!realpath($filePath)){ 
      $filePath = $_SERVER["DOCUMENT_ROOT"] . $filePath; 
     } 
     $fileSize = filesize($filePath); 
     $sizes = array("TB", "GB", "MB", "KB", "B"); 
     $total = count($sizes); 
     while ($total-- && $fileSize > 1024){ 
      $fileSize /= 1024; 
     } 
     return round($fileSize, $digits). " " . $sizes[$total]; 
    } 
    return false; 
} 

Antwort

0

$total-- ist die gleiche wie $total -= 1, die die gleiche wie $total = $total -1 ist. Dies ist bekannt als decrement operator. Sie sind wahrscheinlich mit dem Inkrementoperator vertraut, wenn Sie sich mit for Loops befassen, z. B. for ($i = 0, $i++, $i < 10).

Die Schleife kann umgeschrieben werden als while ($total = $total -1 && $fileSize > 1024), was bedeutet, "während $ total ist immer noch ein truthy Wert (in diesem Fall eine Zahl> 0) und $ fileSize ist> 1024".

+0

Vielen Dank für die nützliche Antwort – amir

+0

@amir, wenn dies Ihre Frage beantwortet, sollten Sie es als akzeptiert für andere, die die gleiche Frage haben könnte. – FatBoyXPC