function - php switch first case not working properly -


i have function first case executed when $time = 0

    function time_spended($time){         switch($time){             case $time > (60*60*24*365):                 $time /= (60*60*24*365);                 return number_format($time, 2, '.', ',') . " year" . ($time > 1 ? "s":"");                 break;             case $time > 60*60*24:                 $time /= 60*60*24;                 return number_format($time, 2, '.', ',') . " day" . ($time > 1 ? "s":"");                 break;             case $time > 60*60:                 $time /= 60*60;                 return number_format($time, 2, '.', ',') . " hour" . ($time > 1 ? "s":"");                 break;             case $time > 60:                 $time /= 60;                 return number_format($time, 2, '.', ',') . " minute" . ($time > 1 ? "s":"");                 break;             default:                 return number_format($time, 2, '.', ',') . " seconds";         }     } 

for example:

echo time_spended(0); // 0.00 year 

instead of:

0.00 seconds

function returns 0.00 year (in other words, result first case), because $time = 0 in switch evaluates false, , $time > (60*60*24*365) true returns result first branch, viz:

[0 == true] => [false == true] => [false] 

to make work should use switch(true) instead of switch($time), should work way shown below:

[true == (0 > 60*60*24*365)] => [true == true] => [false] 

example