Funktio sqrt() palauttaa luvun neliöjuuren. Funktio strpos() tarkistaa, onko merkkijonossa haluttua merkkiä. strpos() -funktion vertailu IF-lauseessa operaattorilla === false, ensimmäisessä IF-lauseen lohkossa on epätosiarvo, eli merkkijonosta ei löytynyt haettua merkkijonoa.
Koodin pitäisi tarkistaa $_REQUEST["luku"] -muuttujasta, onko siinä pistettä. Jos on, palautetaan 0 ja muutoin 1. Tämä siis liittyy PHP-haasteen tehtävään 19. Miksi neljännessä testissä ohjelmani palauttaa 0, vaikka tulos on 1? Ohjelma toimii edellisissä testeissä, mutta ei tässä.
En nyt muista noita testejä ulkoa (enkä yritäkään), mutta yksi syy voi olla liukulukujen epätarkkuus. Joka tapaukessa suosittelen jotain toista ratkaisutapaa.
Onnistuin tehtävässä, kun vertasin neliöjuurta joka on kokonaisluku float-arvoiseen neliöjuureen.
Juuri niin on parempi:
if ( floor(sqrt($luku)) == sqrt($luku) ) { // $luku on neliö }
Häh? Mitä eroa on if(a == b) ja if(a === b) ?
Kolmen =-merkin operaattori === tarkistaa myös arvon tyypin.
0 == false # tosi 0 === false # epätosi
punppis kirjoitti:
Häh? Mitä eroa on if(a == b) ja if(a === b) ?
<?php "2" == 2; // true "2" === 2; // false
Aihe on jo aika vanha, joten et voi enää vastata siihen.