waplet Posted January 22, 2010 Report Share Posted January 22, 2010 Atvainojos, bet vai šo topiku nevar piekabināt? Quote Link to comment Share on other sites More sharing options...
briedis Posted January 27, 2010 Report Share Posted January 27, 2010 Vienkārša funkcija, kas atgriež mēneša nosaukumu latviski, ja tiek padots skaitlis 1-12, ja tiek padots mēneša nosaukums, tad tiek atgriezts mēneša skaitlis. padod 1 atgriež "Janvāris" padod "Janvāris" atgriež 1 function getMonth($month){ $months[1] = "Janvāris"; $months[2] = "Februāris"; $months[3] = "Marts"; $months[4] = "Aprīlis"; $months[5] = "Maijs"; $months[6] = "Jūnijs"; $months[7] = "Jūlijs"; $months[8] = "Augusts"; $months[9] = "Septembris"; $months[10] = "Oktobris"; $months[11] = "Novembris"; $months[12] = "Decembris"; if(is_numeric($month)){ $month = (int)$month; if(array_key_exists($month,$months)){ return $months[$month]; }else{ return false; } }else{ foreach($months as $key=>$item){ $month = mb_strtolower(trim($month), "utf-8"); $item = mb_strtolower($item, "utf-8"); if($item == $month){ return $key; } } } return false; } Quote Link to comment Share on other sites More sharing options...
2easy Posted January 27, 2010 Report Share Posted January 27, 2010 es labāk šoreiz neko neteikšu par optimizēšanu, kā 16x rindiņu vietā rakstīt 2x :D:D:D Quote Link to comment Share on other sites More sharing options...
briedis Posted January 27, 2010 Report Share Posted January 27, 2010 (edited) es labāk šoreiz neko neteikšu par optimizēšanu, kā 16x rindiņu vietā rakstīt 2x :D:D:D Īpašā optimizācija priekš 2easy ;) <? function getMonth($month){ $months = Array("janvāris", "februāris", "marts", "aprīlis", "maijs", "jūnijs", "jūlijs", "augusts", "septembris", "oktobris", "novembris", "decembris"); return isset($months[(int)$month-1]) ? ucfirst($months[(int)$month-1]) : ($m = array_search(mb_strtolower($month,"utf-8"), $months) !== false ? $m + 1 : false); } ?> Diemžēl, te no kiss paliek pāri tikai kis :D EDIT: atjaunoju kopu :p Edited January 27, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
2easy Posted January 27, 2010 Report Share Posted January 27, 2010 function getMonth($v) { // izdod mēnesi (abos virzienos): mēneša numurs -> mēneša nosaukums, mēneša nosaukums -> mēneša numurs $a = array('Janvāris', 'Februāris', 'Marts', 'Aprīlis', 'Maijs', 'Jūnijs', 'Jūlijs', 'Augusts', 'Septembris', 'Oktobris', 'Novembris', 'Decembris'); if (is_numeric($v)) return isset($a[$v - 1]) ? $a[$v - 1] : null; else { $a = array_flip($a); $v = ucfirst(mb_strtolower(trim($v))); return isset($a[$v]) ? $a[$v] + 1 : null; } } // test mb_internal_encoding('utf-8'); echo '<pre>' . getMonth(7) . "\n" . // Jūlijs getMonth(100) . "\n" . // null getMonth('Jūlijs') . "\n" . // 7 getMonth('jūlijs') . "\n" . // 7 getMonth('JŪLIJS') . "\n" . // 7 getMonth(' jūlijs ') . "\n" . // 7 getMonth('asdf') . "\n" . // null '</pre>'; Quote Link to comment Share on other sites More sharing options...
briedis Posted January 27, 2010 Report Share Posted January 27, 2010 (edited) heh, būtu zinājis par tādu ucfirst un array_flip, būtu mans kods arī īsāks :)) EDIT: Nu re, tagad mans kods vēl "optimālāks" :D Edited January 27, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
2easy Posted January 27, 2010 Report Share Posted January 27, 2010 Savukārt, labi dokumentēts, skaists un optimāls kods, kuram pierakstīts arī autors komentāru galvgalī, strauji radīs pozitīvu priekštatu par programmētāju, kurš šo kodu ir radījis. autoru komentāru galvgalī raksta tamdēļ, lai zinātu, kurš ir jāsit, kad kkas "nejies" :D:D:D izdzīvošanas taktika PSRS laikā: 1) ja tu domā, tad neraksti 2) ja tu domā un raksti, tad neparaksties 3) ja tu domā, raksti un paraksties, tad nebrīnies Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted January 27, 2010 Report Share Posted January 27, 2010 vispar jau topiks ir Noderigas f-jas, nevis 'kraninju merishnas' sacensibas ;) Ja menis izmantotu f-ju 'norej', tad tas tikai nosit velimi kautko sheit ieposteet.. Jo daudziem ir f-jas kas rakstiitas stipri pasen ( reti kura buus PHP3 bet daudzas buus PHP 4) , bet idejiski joprojam aktualas... Taa kaa, labak nevajadzetu kritizeet & spriest ka 'nav idialogiski pareizi' etc.. Galvenais tomer ir doma, kaa un ko atrak izveidot. ==> skatiit Topika nosaukumu ;) Quote Link to comment Share on other sites More sharing options...
codez Posted January 27, 2010 Report Share Posted January 27, 2010 (edited) Šķiet pagaidām īsākais variants: function getMonth($m){ $z = Array("","janvāris", "februāris", "marts", "aprīlis", "maijs", "jūnijs", "jūlijs", "augusts", "septembris", "oktobris", "novembris", "decembris"); return ($m>=1 and $m<13)?$z[(int)$m]:array_search(mb_strtolower(trim($m),"utf-8"),$z); } echo ($s=getMonth('ABC'))?'Y:'.$s:'N'; //N echo '<br />'; echo ($s=getMonth('1'))?'Y:'.$s:'N'; //Y:janvāris echo '<br />'; echo ($s=getMonth(3))?'Y:'.$s:'N'; //Y:marts echo '<br />'; echo ($s=getMonth('jŪnijs'))?'Y:'.$s:'N'; //Y:6 echo '<br />'; echo ($s=getMonth(' jūnijs'))?'Y:'.$s:'N'; //Y:6 echo '<br />'; echo ($s=getMonth('13'))?'Y:'.$s:'N'; //N echo '<br />'; echo ($s=getMonth(12.5))?'Y:'.$s:'N'; //Y:decembris echo '<br />'; echo ($s=getMonth('13.5'))?'Y:'.$s:'N'; //N echo '<br />'; Strādā arī ar daļskaitļiem Kurš var īsāk? Edited January 27, 2010 by codez Quote Link to comment Share on other sites More sharing options...
2easy Posted January 27, 2010 Report Share Posted January 27, 2010 (edited) codez, u r my hero! :)) EDIT: es gan pa vidu rakstītu mazliet vairāk whitespace, lai būtu vieglāk lasīt (Java droši vien arī priecāsies par to :D). bet tā jau tiešām tavs variants rulez. gan tā pirmā pārbaude, gan array_search() ftw function getMonth($v) { // izdod mēnesi (abos virzienos): mēneša numurs -> mēneša nosaukums, mēneša nosaukums -> mēneša numurs $a = array('', 'Janvāris', 'Februāris', 'Marts', 'Aprīlis', 'Maijs', 'Jūnijs', 'Jūlijs', 'Augusts', 'Septembris', 'Oktobris', 'Novembris', 'Decembris'); return $v >= 1 && $v <= 12 ? $a[$v] : array_search(ucfirst(mb_strtolower(trim($v))), $a); } Edited January 27, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
2easy Posted January 27, 2010 Report Share Posted January 27, 2010 Ja menis izmantotu f-ju 'norej', tad tas tikai nosit velimi kautko sheit ieposteet.. tas nu gan ir baigi atkarīgs no cilvēka. es tieši otrādi vsp neko nepostotu kkādā dead forumā, kur būtu 0 reakcija. jo vairāk kritikas, jo labāk. tā var kko jaunu iemācīties. vismaz man tas liekas labāk nekā dzīvot kkādā pašpārliecinātības burbulī. tā jau visam ir dafiga visādi standarta risinājumi. optimizēšana ir viens no virzieniem, kur vēl saglabājas challenge ;) Quote Link to comment Share on other sites More sharing options...
v3rb0 Posted January 28, 2010 Report Share Posted January 28, 2010 ucfirst(mb_strtolower(..)) var aizstāt ar 1nu f-ju mb_convert_case(..,MB_CASE_TITLE) - ja skaita simbolus būs vairāk, ja f-jas, par vienu mazāk. Quote Link to comment Share on other sites More sharing options...
marrtins Posted January 28, 2010 Report Share Posted January 28, 2010 setlocale(LC_TIME, "Latvian_Latvia.1257"); // Win setlocale(LC_TIME, "LV_lv"); // Linux function getMonth($month) { return strftime("%B", mktime(0, 0, 0, $month, 1, 1970)); } ;) Quote Link to comment Share on other sites More sharing options...
Pentiums Posted January 28, 2010 Author Report Share Posted January 28, 2010 Par tiem saīsinātajiem $_GET, $_POST.... Šādi tak arī var $g = array(); $g = $_GET; $p = array(); $p = $_POST; Quote Link to comment Share on other sites More sharing options...
briedis Posted January 28, 2010 Report Share Posted January 28, 2010 (edited) Vienkārša funkcija, kas parāda lietotāju skaitu, kas ir veikuši kādas aktivitātes norādītajā laika posmā (5min) //Dabūjam lietotāju skaitu kas ir online function getOnlineUserCount(){ $ip = ip2long($_SERVER['REMOTE_ADDR']); $now = time(); $delta = $now - 300; //5 minūtes mysql_query("DELETE FROM lietotaji_online WHERE last_seen < $delta OR ip = $ip"); mysql_query("INSERT INTO lietotaji_online(ip,last_seen) VALUES($ip,'$now')"); $data = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) FROM lietotaji_online")); return (int)$data['COUNT(*)']; } Tabula, kur glabājas CREATE TABLE lietotaji_online ( ip bigint NOT NULL, last_seen int(11) NOT NULL, PRIMARY KEY (ip), INDEX (last_seen) )ENGINE = MEMORY; EDIT1: pievienots ENGINE = MEMORY EDIT2: pievienots indekss last_seen (jā, par šito biju štukojis, bet nepieliku) EDIT3: pielaboju kvērijus (noņēmu nevajadzīgās pēdiņas) Edited February 9, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.