Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Laskimessa ongelma

bgf1 [08.03.2008 11:05:43]

#

<?php

$oper = "*";
$luku1 = $_GET["l1"];
$luku2 = $_GET["l2"];

echo $oper;
echo $luku1;
echo $luku2;

print "<br>";

function laske($luku1,$oper,$luku2)
{
return ($luku1.($oper).$luku2);
}

print laske($luku1,$oper,$luku2);
?>

Jostain syystä ohjelma palauttaa arvon teksti muodossa eikä tuloa (eli luku1 x luku2). Olisko jollain vinkkiä?

T. Jukka

(Mod. Edit. Kooditagit, opitkos jo, mokoma?)

Hakoulinen [08.03.2008 11:39:07]

#

Et taida voida kertoa pelkästään laittamalla *-merkin väliin.

tsuriga [08.03.2008 11:44:29]

#

PHP muuttaa konkatenoidessa muuttujat automaagisesti merkkijonoiksi. Joudut käyttämään joko eval-funktiota, tai sitten
https://www.ohjelmointiputka.net/koodivinkit/25117-php-infix-postfix-muunnos-ja-postfix-suoritus
https://www.ohjelmointiputka.net/koodivinkit/24771-php-laskutoimitusten-suorittaminen-merkkijonosta

ByteMan [08.03.2008 11:49:57]

#

itse tekisin tuon laske -funktion näin:

function laske($luku1,$oper,$luku2)
{
    if($oper == "*")
    {
        return ($luku1 * $luku2);
    }
}

itsellä ainakin toimi

tsuriga [08.03.2008 11:55:30]

#

Jolloinkamilloinka switchi on kätevä komentorakenne mikäli operaattoreita tahtoo useamman.

Niko [08.03.2008 13:14:20]

#

return eval("return $luku1 $oper $luku2;");

Kantsii tarkistaa mitä dataa annetaan :)

Vastaus

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

Tietoa sivustosta