Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP if ja-operaattori

vesikuusi [03.01.2013 17:47:12]

#

Yksinkertainen kysymys jälleen: onko seuraava lause "laillinen"?

if ( $_GET ['foo'] == "bar" && isset ( $_GET ['foo'] ) );

Omien kokeilujeni perusteella PHP ei välitä, vaikka foo:n olemassaolo tarkistetaan vasta sen sisällön vertailun jälkeen. Vai muuttaako PHP tarkistusten järjestystä if-lauseen sisällä?

Kokeilin juttua ohjelmalla, joka yrittää käyttää foo-parametria, vaikka sitä ei olisi annettu, mutta PHP ei antanut virheilmoituksia olemattomien muuttujien käytöstä.

Entä seuraavanlainen lause:

if ( isset ( $_GET ['foo'] ) && $_GET ['foo'] == "bar" );

Loppuuko lauseen suoritus, jos ensimmäinen ehto tuottaa epätoden tuloksen? Voinko tehdä tuollaisia iffejä rauhassa pelkäämättä, että PHP alkaa valittamaan olemattomasta 'foo'-alkiosta?

Metabolix [03.01.2013 17:57:56]

#

Suoritus loppuu, jos ensimmäinen puoli tuottaa epätoden. Siksi on oikein tehdä ensin isset-tarkistus. Ensimmäisestä koodistasi tulee huomautus "Notice: Undefined index: foo in X.php on line X", ja ==-operaattorin vasemmalle puolelle tulee arvo null.

Kaikki ilmoitukset kannattaa kehitysvaiheessa pitää esillä ja tietenkin myös korjata. Jos et tiedä, miten nämä ilmoitukset saa näkyviin, kirjoita hakuun display_errors ja lue PHP-oppaasta.

vesikuusi [03.01.2013 20:02:11]

#

Jees kiitos!

Vastaus

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

Tietoa sivustosta