onko "0" yhtä kuin true?
if ("0" == true)
echo "TOTTA";
else
echo "PALTURIA"
tuo palauttaa palturia, mutta eikö "0" pitäisi olla totta koska se on merkkijono eikä se ole tyhjä?
vai muuttaako vertailu ensin nollan INTiksi tai booliksi ennenkuin vertaa?
Tyhjän merkkijonon "" ja merkkijonon "0" totuusarvo on false. Muiden merkkijonojen totuusarvo on true.
miksi "0" on false, eihän se ole tyhjä?
Tämä on PHP:n kehittäjien tekemä päätös. Ehkä ajatus on, että "0" on vähän kuin 0, joka taas on false.
Ilmeisesti PHP:stä kyselet?
Koska käytät ==-operaattoria vertailuun, PHP yrittää avuliaasti muuttaa vertailtavat sellaisiksi, että vertailussa on järkeä (koska eihän teksti koskaan ole oikeasti true vaan tekstiä). Niinpä se kaiketi tuossa tapauksessa muuttaa tekstin kokonaisluvuksi, joka taas sattuu vastaamaan bool-arvoa false.
Monissa kielissä tekstin ja luvun (tai totuusarvon) vertailu ei ole alkuunkaan sallittua, koska siinä ei loogisesti ole järkeä.
Jos asiaan liittyy jokin erityinen tilanne, jossa tarvitset tällaista vertailua, kannattaa kertoa myös se tilanne, niin voit saada siihen suoremman ratkaisun.
Tuo Antti Laaksosen vastaus selittänee sitte myös sen miksi if ("0") antaa falsen.
Tämä ei liity mihinkään koodiin, kunhan tuli kummittelemaan ajatuksiani ja aloin kokeilemalla kokeilemaan...
Kiitän vastauksista :)
https://www.php.net/manual/en/types.comparisons.
http://www.reddit.com/r/programming/comments/
Pilkunviilaus: käsittääkseni ohjelmoinnissa on alusta alkaen ollut että nolla on yhtäkuin false, mutta jos sisältönä/tekstinä on nolla, sitä ei voi käyttää laskennassa eli puhutaan eri asioista. Eräänlaisena esimerkkinä, Tip.it-sivun esinetietokannan vertailutyökalu suosittaa vertailemaan saman käyttötarkoituksen esineitä eikä esim. kenkää kypärään :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.