Moderators Dragos Posted August 31, 2017 Moderators Report Share Posted August 31, 2017 (edited) Recent am avut nevoie să afişez timpul trecut de la ultimele acţiuni pe o platformă, aşa că am scris funcţia următoare: <?php function return_time($timestamp) { $mins = time() - $timestamp; if($mins == 0) { $mins = "adineauri"; }elseif($mins == 1) { $mins = "acum o secunda"; }elseif($mins < 20) { $mins = "acum $mins secunde"; }elseif($mins < 60) { $mins = "acum $mins de secunde"; }elseif($mins < 120) { $mins = "acum un minut"; }elseif($mins < 1200) { $mins = floor($mins / 60); $mins = "acum $mins minute"; }elseif($mins < 3600){ $mins = floor($mins / 60); $mins = "acum $mins de minute"; }elseif($mins < 7200){ $mins = "acum o ora"; }elseif($mins < 72000){ $mins = floor($mins / 3600); $mins = "acum $mins ore"; }elseif($mins < 86400){ $mins = floor($mins / 3600); $mins = "acum $mins de ore"; }else{ $mins = date("j.m.Y",$timestamp) . " la " . date("G:i:s",$timestamp); } return $mins; } Edited August 31, 2017 by Dragos Quote Link to comment Share on other sites More sharing options...
Erase Posted September 1, 2017 Report Share Posted September 1, 2017 (edited) De ce nu folosesti switch ? Shit. @dancezar N-am observat ca nu sunt variabile definite. Edited September 1, 2017 by Erase Quote Link to comment Share on other sites More sharing options...
Active Members dancezar Posted September 1, 2017 Active Members Report Share Posted September 1, 2017 (edited) On 9/1/2017 at 6:36 PM, Erase said: De ce nu folosesti switch ? Cum folosesti switch in cazul asta? Si de ce ar folosi switch daca este acelasi lucru? Edited September 4, 2017 by dancezar Quote Link to comment Share on other sites More sharing options...
Timelord Posted September 1, 2017 Report Share Posted September 1, 2017 @Erase @dancezar Ceva de genul asta: <?php function return_time($timestamp){ $mins = time() - $timestamp; switch (true) { case $mins == 0: $mins = "adineauri"; break; case $mins == 1: $mins = "acum o secunda"; break; case $mins < 20: $mins = "acum $mins secunde"; break; default: $mins = "niciodata"; break; } return $mins; } ?> 1 Quote Link to comment Share on other sites More sharing options...
Active Members dancezar Posted September 1, 2017 Active Members Report Share Posted September 1, 2017 55 minutes ago, Timelord said: @Erase @dancezar Ceva de genul asta: <?php function return_time($timestamp){ $mins = time() - $timestamp; switch (true) { case $mins == 0: $mins = "adineauri"; break; case $mins == 1: $mins = "acum o secunda"; break; case $mins < 20: $mins = "acum $mins secunde"; break; default: $mins = "niciodata"; break; } return $mins; } ?> Genial, deci practic ai inlocuit elseif cu case si in final ai fi scris cu o linie mai mult decat cu elseif. 3 Quote Link to comment Share on other sites More sharing options...
Erase Posted September 1, 2017 Report Share Posted September 1, 2017 @Timelord treaba aia e de 10 ori mai ineficienta decat if/elseif. Quote Link to comment Share on other sites More sharing options...
Moderators Dragos Posted September 1, 2017 Author Moderators Report Share Posted September 1, 2017 (edited) Nu este ok din punct de vedere algoritmic să foloseşti switch-ul aşa, scopul lui nu este să fie folosit pentru comparaţii matematice. C++ nu permite aşa ceva, Java nu permite aşa ceva, este doar o chestie specifică PHP-ului pentru a oferi mai multă libertate. Edited September 1, 2017 by Dragos Quote Link to comment Share on other sites More sharing options...
adicode Posted September 1, 2017 Report Share Posted September 1, 2017 Just now, Dragos said: Nu este ok din punct de vedere algoritmic să foloseşti switch-ul aşa, scopul lui nu este să fie folosit pentru comparaţii. C++ nu permite aşa ceva, Java nu permite aşa ceva, este doar o chestie specifică PHP-ului pentru a oferi mai multă libertate. Scuze de off-topic. Daca switch-ul nu poate fii folosit in comparari, in ce cazuri poate sa fie folosit? Sunt doar curios. Multumesc Quote Link to comment Share on other sites More sharing options...
Moderators Dragos Posted September 1, 2017 Author Moderators Report Share Posted September 1, 2017 Just now, adicode said: Scuze de off-topic. Daca switch-ul nu poate fii folosit in comparari, in ce cazuri poate sa fie folosit? Sunt doar curios. Multumesc Am corectat. M-am referit la comparaţii de tipul a > b, a >=b, etc. În general, din ce am văzut, sunt folosite două variante în case: dacă variabila este identică cu o valoare sau dacă variabila se află într-un interval (ex. "case 1 ... 100"). 1 Quote Link to comment Share on other sites More sharing options...
gear Posted October 29, 2017 Report Share Posted October 29, 2017 (edited) O idee ar fi să folosești o bibliotecă JS ca să formateze data într-un mod relativ în loc de PHP. Edited October 29, 2017 by gear Quote Link to comment Share on other sites More sharing options...