2012-01-13 60 views
1

我該怎麼做?如何使用變量作爲操作符?

$v1=105; 
$v2=90; 
if ($value=='subtraction'){ 
    $operator='-'; 
}else{ 
    $operator='+'; 
} 

$new_value=$v1.$operator.$v2; 

所以它應該返回105-90 = 15或105 + 90 = 195。但是,我怎樣才能使用$運算符變量作爲運算符?例如,這不起作用:

eval("$new_value=$v1".$operator."$v2"); 

感謝您的幫助!

+2

在條件下做數學 – 2012-01-13 22:38:22

回答

5

我建議這樣做,而是利用eval,你不得不做這樣的:

// You need to escape the $ in $new_value 
eval("\$new_value = $v1 $operator $v2"); 

我建議做這樣的事情,而不是(即:不要使用對於運營商變,只是做計算):

$v1=105; 
$v2=90; 
if ($value=='subtraction'){ 
    $new_value= $v1 - $v2; 
}else{ 
    $new_value= $v1 + $v2; 
} 
+0

那麼,eval是不是預先;-),有什麼更好的? – Jordy 2012-01-13 22:39:24

+0

@Jordy:只要在if語句中做數學運算。看我的第二個例子。 – 2012-01-13 22:41:06

+0

好的,但我需要做20次左右,所以我做了一個功能,我想。也許那更好?但非常感謝!-) – Jordy 2012-01-13 22:42:46

0

對方回答是好,但如果你真的想要做一些棘手的,我想你可以有一個變量持有(而不是運營商)的功能。

//untested hypothetical example 

$myOperation = function Add($num1, $num2){ 
    return $num1+$num2; 
} 

沒有這樣做,在PHP個人,但我認爲你可以...

0

也許你可以改變這一點:

<?php 
$v1 = 105; 
$v2 = 90; 
if($value=='subtraction') 
    $v2 *= -1; 
$new_value = $v1 + $v2; 
?> 
0

爲什麼不讓$操作一個函數?

$v1 = 10; 
$v2 = 20; 

$substraction = function($a, $b) { 
    return $a - $b; 
}; 

[...] 

$someString = 'substraction'; 
echo $$someString($v1,$v2);