Autor Zpráva
avaster
Profil
$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
avaster:
if(strtotime($cas) == strtotime($casDb))

//edit: lépe: zrušit proměnnou čas a udělat
if(time() == strtotime($casDb))
Perry
Profil
if(strtotime($cas) == strtotime($casDb))

==
bych ze zkušenosti raději nepoužíval pro porovnávání textu. Používám funkci převzatou z C:
 if (strcmp(strtotime($cas) , strtotime($casDb)) == 0) 
..
SwimX
Profil
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
Perry
prosim? a jaky je problem s ==?
drasha
Profil
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 *
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
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 *
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
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
Perry: to je síce pekné, ale to nie je prípad o ktorom sa tu bavíme...
Perry
Profil
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0