Autor | Zpráva | ||
---|---|---|---|
avaster Profil |
#1 · Zasláno: 2. 9. 2009, 21:32:15
$cas = date("Y-m-d H:i:s"); $casDb = //DATETIME vytiahnuty z mysql potreboval by som porovnat ci $cas je neskôr ako $casDb pomocou if($cas > $casDb) to nefunguje spravne.. |
||
SwimX Profil |
#2 · Zasláno: 2. 9. 2009, 21:54:15 · Upravil/a: SwimX
avaster:
if(strtotime($cas) == strtotime($casDb)) //edit: lépe: zrušit proměnnou čas a udělat if(time() == strtotime($casDb)) |
||
Perry Profil |
#3 · Zasláno: 3. 9. 2009, 16:16:47
„if(strtotime($cas) == strtotime($casDb))“
== if (strcmp(strtotime($cas) , strtotime($casDb)) == 0) |
||
SwimX Profil |
#4 · Zasláno: 3. 9. 2009, 16:29:39 · Upravil/a: SwimX
Perry:
„bych ze zkušenosti raději nepoužíval pro porovnávání textu“ ale já texty neporovnávám?.. vždyť jsou to integery. |
||
Majkl578 Profil |
#5 · Zasláno: 3. 9. 2009, 17:00:14 · Upravil/a: Majkl578
Perry
prosim? a jaky je problem s ==? |
||
drasha Profil |
#6 · Zasláno: 3. 9. 2009, 17:06:08
Doporučuju ti ukládat do DB počet sekund, které uplynuli od 1.1. 1970 - tj. fce Time(). Pak jen porovnáš hodnotu z DB a Time().
|
||
DoubleThink Profil * |
#7 · Zasláno: 3. 9. 2009, 18:10:40
Tak tohle je tedy pěkná sbírka blábolů, to se hned tak nepodaří.
„== bych ze zkušenosti raději nepoužíval pro porovnávání textu.“ Jaké zkušenosti? V céčku je text pole znaků, operátorem == bys porovnával adresy polí. Proto strcmp. Pokud v PHP nepotřebuješ porovnávat nějaké doprasené řetězce terminované bůhví čím, nikdy s funkcí strcmp nepřijdeš do styku. Kromě toho, jak správně dodal SwimX, výstup z strtotime je číslo. „Doporučuju ti ukládat do DB počet sekund, které uplynuli od 1.1. 1970 - tj. fce Time(). Pak jen porovnáš hodnotu z DB a Time().“ Jediný správný formát času v MySQL je DATE, TIME, DATETIME nebo TIMESTAMP. Nikdy číslo - za žádných okolností. |
||
Perry Profil |
#8 · Zasláno: 3. 9. 2009, 18:40:14
„ale já texty neporovnávám?.. vždyť jsou to integery.“
My bad. Přehlídl jsem se :) DoubleThink A jak má PHP interně dělané stringy? Objektově asi ne a jinak to ani nejde. Imho tim padem stejne jako C. Akorát má přetížený operátor == na porovnání. |
||
DoubleThink Profil * |
#9 · Zasláno: 4. 9. 2009, 01:56:36
„Akorát má přetížený operátor == na porovnání.“
Neříkal bych tomu přetížení, to PHP neumí. Jde o implementaci operátoru v jádře interpreta (kterou neznám). Z logiky věcí by se dalo usuzovat, že porovnání operátorem bude bude mít menší režii než funkcí (která nevrací booleovskou hodnotu mimochodem - na rozdíl od operátoru). Pokud si budeš připadat víc cool, klidně používej strcmp, ale zbytečně si znepřehledňuješ zdroják a hlavně si hraješ v PHP na něco, na co je svou architekturou krátké. |
||
Perry Profil |
#10 · Zasláno: 4. 9. 2009, 10:52:28 · Upravil/a: Perry
„DoubleThink“
$cislo = 1; $retezec = "1d"; if ($cislo == $retezec) echo "= = Shoda<br/>"; if (strcmp($cislo, $retezec) == 0) echo "strcmp shoda<br/>"; if ($cislo === $retezec) echo "= = = Shoda<br/>"; A == selze (nebo alespon na mem localhostu mi to napise, ze je to shodne pri pouziti ==) Pokud predem nevím, co v tech promennych je, tak je pouziti == dost risk, diky implicitni typove konverzi PHPka |
||
tiso Profil |
#11 · Zasláno: 4. 9. 2009, 11:01:38
Perry: to je síce pekné, ale to nie je prípad o ktorom sa tu bavíme...
|
||
Perry Profil |
#12 · Zasláno: 4. 9. 2009, 11:04:54
Tiso
To ne :) Už se z toho díky mému blbému příspěvku stal off-topic. Jenom jsem poukazoval na to, že == neni na stringy 100%, jak psal DoubleThink |
||
tiso Profil |
#13 · Zasláno: 4. 9. 2009, 11:28:58
Perry: ale mýliš sa, je.
Pokiaľ porovnávaš string a číslo, tak sa to správa tak, ako je to napísané v manuáli. A som tiso, nie Tiso. |
||
Časová prodleva: 15 let
|
0