Moderators Dragos Posted August 31, 2017 Moderators Report 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
Erase Posted September 1, 2017 Report 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
Active Members dancezar Posted September 1, 2017 Active Members Report 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
Timelord Posted September 1, 2017 Report 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
Active Members dancezar Posted September 1, 2017 Active Members Report 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
Erase Posted September 1, 2017 Report Posted September 1, 2017 @Timelord treaba aia e de 10 ori mai ineficienta decat if/elseif. Quote
Moderators Dragos Posted September 1, 2017 Author Moderators Report 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
adicode Posted September 1, 2017 Report 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
Moderators Dragos Posted September 1, 2017 Author Moderators Report 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
gear Posted October 29, 2017 Report 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