Zadejte hledaný výraz...

Strpos nevrací tru/false

Potřebuji někde vyhodnocovat obsah proměnných a zkouším to přes StrPos, jenže mi to nechodí. Já tedy tuším, že to bude chyba 909 - selhání mezi klávesnicí a židlí, ale nemohu přijít na to kde. Pls, mohli byste se mi kouknout na následující kód a nějak mne popostrčit dopředu?
Jenomže mi to pořád vrací false, proč?
5. 11. 2011 15:59:48
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694954
Skelet
verified
rating uzivatele
(9 hodnocení)
5. 11. 2011 16:06:03
Když se podíváš do dokumentace, tak zjistíš že funkce vrací integer místo na kterém se řetězec nachází, nebo bol false. Kód je dosti krkolomný, ale dá se to vyřešit obrácením podmínky.
if ($shipping_account === false)
{
echo 'false';
}
else
{
echo 'true';
}
5. 11. 2011 16:06:03
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694953
No to vím, vrací číslo pozice a pokud se použije ===, tak by měla vracet logickou hodnotu, nebo ne?
Takže něco jako !== true ?
(Ten kód vypadal původně úplně jinak, bylo to něco jako
if (strpos($payment_info_details, 'Platba na účet') === true)
ale jak říkám, nechodilo to.)
Jo aha, ona vrací jenom FALSE, já myslel že i TRUE, tak díky za postrčení. Rep+
5. 11. 2011 16:13:49
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694952
Skelet
verified
rating uzivatele
(9 hodnocení)
5. 11. 2011 18:58:09
=== ti nijak nemění vrácenou hodnotu, funguje jako ==, ale kontroluje i datové typy.
Např:
0 == NULL //TRUE
0 === NULL //FALSE
5. 11. 2011 18:58:09
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694951
hm
verified
rating uzivatele
(20 hodnocení)
5. 11. 2011 19:13:45
pokud chces aby vracel true misto cisla tak pretypuj :) (bool)strpos() === true uz fungovat bude
5. 11. 2011 19:13:45
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694950
5. 11. 2011 20:10:36
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694949
zaruba
verified
rating uzivatele
5. 11. 2011 20:47:39
=== se v tomto případě používá proto, aby jsi odlišil, jestli funkce vrátila false a nebo vrátila, že se daný řetězec nachází na znaku 0, tj je na začátku řetězce.
Protože 0== false je true a false == false je také true, ale 0 ===false je false.
5. 11. 2011 20:47:39
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694948
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
5. 11. 2011 21:11:02
ja to nechapu a proc presne se o to snazis? nehledas nahodou jednoduche:
echo (preg_match("#Platba na účet#siu", $payment_info_details))
?"true"
:"false"
5. 11. 2011 21:11:02
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694947
Takže jsem to udělal takto:
a to už chodí správně, díky Martine.
preg_match: díky, ale to už je na mne moc, regulární výrazy moc neznám a moc se mi s nima experimentovat nechce (zatím).
Díky všem za rady, je to hned jiná radost, když člověk dostane fundované odpovědi k tématu.
6. 11. 2011 10:42:02
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694946
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
6. 11. 2011 18:02:25
Urcite se na regexy podivej, preg_match je totiz delany prave na testovani podminky a vraci boolean a ne pozici
6. 11. 2011 18:02:25
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694945
Jo aha, tak to je tedy lepší než ten strpos, co jsem používal doposud. OK, díky za rady, podívám se na to.
6. 11. 2011 18:12:35
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694944
node
verified
rating uzivatele
(5 hodnocení)
8. 11. 2011 10:23:01
A prestan pouzivat slovne vyrazy(and, or..) ale pouzivaj znaky(&&, ||). Preco to zistis ked si precitas dokumentaciu. Ja uz si to presne nepamatam, ale je to preto lebo slovne vyrazy maju ine poradie resp podmienky ako znakove a preto sa navratove hodnoty mozu lisit medzi AND a &&.
8. 11. 2011 10:23:01
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694943
Když nevíš, proč to používáš, jak se to liší od rituálu? :)
Operátory mají tuto precedenci
&&, ||
=
AND, OR
Takže
Osobně dávám přednost slovním logickým operátorům, protože se lépe čtou, a při přiřazování vždy používám závorky (jo, už jsem se spálil :)).
Pokud je používáš v if, tam asignace stejně nemá co dělat, takže to je jedno.
8. 11. 2011 10:40:49
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694942
MAHI
verified
rating uzivatele
(15 hodnocení)
8. 11. 2011 10:57:31
Napsal Martin Schlemmer;721036
Osobně dávám přednost slovním logickým operátorům, protože se lépe čtou, a při přiřazování vždy používám závorky (jo, už jsem se spálil :)).
Pokud je používáš v if, tam asignace stejně nemá co dělat, takže to je jedno.
Proti tomu se nedá nic namítnout. Snad jedině, že když se chce člověk přeorientovat na jiný přísnější jazyk (Java apod.) může být ze začátku trochu vyjevený z toho, že mu tam takové operátory budou házet chybu. :-)
8. 11. 2011 10:57:31
https://webtrh.cz/diskuse/strpos-nevraci-tru-false/#reply694941
Pro odpověď se přihlašte.
Přihlásit