<?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?)
Et taida voida kertoa pelkästään laittamalla *-merkin väliin.
PHP muuttaa konkatenoidessa muuttujat automaagisesti merkkijonoiksi. Joudut käyttämään joko eval-funktiota, tai sitten
https://www.ohjelmointiputka.net/koodivinkit/
https://www.ohjelmointiputka.net/koodivinkit/
itse tekisin tuon laske -funktion näin:
itsellä ainakin toimi
Jolloinkamilloinka switchi on kätevä komentorakenne mikäli operaattoreita tahtoo useamman.
return eval("return $luku1 $oper $luku2;");
Kantsii tarkistaa mitä dataa annetaan :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.