Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: "0" = totta ?

Sivun loppuun

Sahrah [11.01.2009 16:47:48]

#

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?

Antti Laaksonen [11.01.2009 16:54:30]

#

Tyhjän merkkijonon "" ja merkkijonon "0" totuusarvo on false. Muiden merkkijonojen totuusarvo on true.

Sahrah [11.01.2009 16:55:50]

#

miksi "0" on false, eihän se ole tyhjä?

Antti Laaksonen [11.01.2009 16:58:00]

#

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.

Metabolix [11.01.2009 16:59:12]

#

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.

Sahrah [11.01.2009 17:04:42]

#

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

jlaire [11.01.2009 17:41:17]

#

https://www.php.net/manual/en/types.comparisons.php
http://www.reddit.com/r/programming/comments/75gke/perl_6_offers_no_less_than_eq_eqv_and/c05q9vq

rautamiekka [14.01.2009 18:19:01]

#

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


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta