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]