พอมีวิธิเอาสูตรในตารางออกมาคำนวณได้บ้างไม๊ครับ PHP ครับ

เริ่มโดย win_love, 20 มกราคม 2010, 12:32:49

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

win_love

คือว่าผมมีสูตรในตารางหนึ่ง เช่น ($a/$b)*100

แล้วอีกตารางนึงเป็นตัวแปร ผมจะเอามาคำนวณตามสูตรได้ไหมครับ เช่น

$a=10;
$b=20;

ลอง echo ดูมันก้อมาแบบนี้ ($a/$b)*100 เหมือนเดิมครับ
ใครพอมีวิธีบ้างหรือเปล่าครับ

ขอบพระคุณล่วงหน้าครับ
[email protected]

jatuphum

ต้องใช้ function eval  ครับ

รายละเอียดดูได้ที่ http://php.net/manual/en/function.eval.php   

win_love

อ้างถึงจาก: jatuphum ใน 20 มกราคม 2010, 12:57:58
ต้องใช้ function eval  ครับ

รายละเอียดดูได้ที่ http://php.net/manual/en/function.eval.php   


ขอบคุณครับ แต่มันยังไม่คำนวณให้ครับ

$sql1="SELECT
  `eis_s_metric`.condition
FROM
  `eis_s_metric`";
$result1=mysql_query($sql1);
$row1=mysql_fetch_array($result1);
$condition=$row1['condition'];

// $condition คือ ($a/$b)*100

$a=20;
$b=10;

eval("\$condition = \"$condition\";");
echo $condition;

เมื่อทำแล้วมันยังเป็นมันยังเป็นแบบ String อยู่ครับมันไม่คำนวณให้ครับ ข้อมูลที่แสดงคือ
(20/10)*100 อยู่ครับทำยังไมันถึงจะทำคำณวนให้ครับ ค่าที่ต้องการคือ 200 ครับผม
รบกวนขอความกรุณาช่วยทีครับ

ขอบพระคุณครับ

SekRanger

Eval คือคำสั่งเปลี่ยน Text บางส่วนเป็นภาษา PHP ครับ

Return ค่าที่ได้จากการคำนวณครับ


เช่น

$var = '20 + 15';

print eval($var); //Output: 35

jatuphum


$sql1="SELECT
 `eis_s_metric`.condition
FROM
 `eis_s_metric`";
$result1=mysql_query($sql1);
$row1=mysql_fetch_array($result1);

$condition=$row1['condition'];

// $condition คือ ($a/$b)*100

$a=20;
$b=10;


// เอา  " ออกครับ เพราะมันจะมองว่า $condition เป็น string

eval("\$condition = $condition;");
echo $condition;


จาก eval("\$condition = \"$condition\";");
เปลี่ยนเป็น
eval("\$condition = $condition;");

ano

gg

win_love

อ้างถึงจาก: jatuphum ใน 20 มกราคม 2010, 13:44:24

$sql1="SELECT
 `eis_s_metric`.condition
FROM
 `eis_s_metric`";
$result1=mysql_query($sql1);
$row1=mysql_fetch_array($result1);

$condition=$row1['condition'];

// $condition คือ ($a/$b)*100

$a=20;
$b=10;


// เอา  " ออกครับ เพราะมันจะมองว่า $condition เป็น string

eval("\$condition = $condition;");
echo $condition;


จาก eval("\$condition = \"$condition\";");
เปลี่ยนเป็น
eval("\$condition = $condition;");

ขอบคุณทุกๆคนที่ ช่วยหาวิธีให้ครับ ตอนนี้ทำได้แล้วครับพอดีไปเจอ function พอมาทดลองแล้วได้

function matheval($equation){
       $equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation);
       $equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation);
       // you could use str_replace on this next line
       // if you really, really want to fine-tune this equation
       $equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation);
       if ( $equation == "" ) {
               $return = 0;
       } else {
               eval("\$return=" . $equation . ";");
       }
       return $return;
}

ขอบคุณทุกๆท่านอีกครั้งครับ