php.lv forumi: Noderīgas funkcijas - php.lv forumi

Jump to content

  • (5 Pages)
  • +
  • 1
  • 2
  • 3
  • 4
  • 5
  • You cannot start a new topic
  • You cannot reply to this topic

Noderīgas funkcijas Dalamies ar savām funkcijām

#31 User is offline   waplet 

  • ehh waplet's jau pasteidzas
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,234
  • Joined: 2007.01.04

Posted 2010.01.22 13:37

Atvainojos, bet vai šo topiku nevar piekabināt?
Челябинские хакеры настолько суровы, что вместо того, чтобы запомнить пароль от почты, каждый раз ломают ее, чтобы зайти.

http://twitter.com/waplet

#32 User is offline   briedis 

  • Sawļe
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,862
  • Joined: 2005.01.15

Posted 2010.01.27 17:13

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;
	}

Neturi zināšanas zem pūra!

#33 User is offline   2easy 

  • Koda dievs
  • PipPipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 2,006
  • Joined: 2009.10.02

Posted 2010.01.27 17:33

es labāk šoreiz neko neteikšu par optimizēšanu, kā 16x rindiņu vietā rakstīt 2x :D:D:D

#34 User is offline   briedis 

  • Sawļe
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,862
  • Joined: 2005.01.15

Posted 2010.01.27 18:08

View Post2easy, on 2010.01.27 17:33, said:

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

This post has been edited by briedis: 2010.01.27 19:16

Neturi zināšanas zem pūra!

#35 User is offline   2easy 

  • Koda dievs
  • PipPipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 2,006
  • Joined: 2009.10.02

Posted 2010.01.27 19:07

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>';


#36 User is offline   briedis 

  • Sawļe
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,862
  • Joined: 2005.01.15

Posted 2010.01.27 19:14

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

This post has been edited by briedis: 2010.01.27 19:18

Neturi zināšanas zem pūra!

#37 User is offline   2easy 

  • Koda dievs
  • PipPipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 2,006
  • Joined: 2009.10.02

Posted 2010.01.27 19:22

View PostJava, on 2010.01.27 18:10, said:

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

#38 User is offline   Grey_Wolf 

  • Koda dievs
  • PipPipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 4,034
  • Joined: 2004.12.11

Posted 2010.01.27 19:32

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 ;)

#39 User is online   codez 

  • Programmēšanas meistars
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,256
  • Joined: 2008.05.13

Posted 2010.01.27 19:39

Šķ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?

This post has been edited by codez: 2010.01.27 19:48


#40 User is offline   2easy 

  • Koda dievs
  • PipPipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 2,006
  • Joined: 2009.10.02

Posted 2010.01.27 19:58

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);
}

This post has been edited by 2easy: 2010.01.27 20:04


#41 User is offline   2easy 

  • Koda dievs
  • PipPipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 2,006
  • Joined: 2009.10.02

Posted 2010.01.27 20:38

View PostGrey_Wolf, on 2010.01.27 19:32, said:

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 ;)

#42 User is offline   v3rb0 

  • " alt=""/>
  • PipPipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 3,033
  • Joined: 2003.05.15

Posted 2010.01.28 11:07

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.
es te biju..

#43 User is offline   marrtins 

  • Daudzsološais profiņš
  • PipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 649
  • Joined: 2006.06.09

Posted 2010.01.28 15:49

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));
}


;)
www.vps.lv

#44 User is offline   Pentiums 

  • Koda dievs
  • PipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 623
  • Joined: 2007.04.08

Posted 2010.01.28 18:13

Par tiem saīsinātajiem $_GET, $_POST.... Šādi tak arī var
$g = array();
$g = $_GET;

$p = array();
$p = $_POST;

http://niknais.lv

#45 User is offline   briedis 

  • Sawļe
  • PipPipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 1,862
  • Joined: 2005.01.15

Posted 2010.01.28 18:46

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)

This post has been edited by briedis: 2010.02.09 14:43

Neturi zināšanas zem pūra!

Share this topic:


  • (5 Pages)
  • +
  • 1
  • 2
  • 3
  • 4
  • 5
  • You cannot start a new topic
  • You cannot reply to this topic