Yksinkertainen kysymys jälleen: onko seuraava lause "laillinen"?
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:
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?
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.
Jees kiitos!
Aihe on jo aika vanha, joten et voi enää vastata siihen.