在 PHP 中,我可以这样做:
$value1 = 5;
$value2 = -2;
echo $value1 + $value2; // 3
但是我将如何用乘法或除法来做到这一点?就像是:
$value1 = 10;
$value2 = /2;
echo $value1 (?) $value2; // 5;
我将如何尽可能简单地处理这种情况?
在 PHP 中,我可以这样做:
$value1 = 5;
$value2 = -2;
echo $value1 + $value2; // 3
但是我将如何用乘法或除法来做到这一点?就像是:
$value1 = 10;
$value2 = /2;
echo $value1 (?) $value2; // 5;
我将如何尽可能简单地处理这种情况?
如果只需要区分除法和乘法,
$value2 = 2;
//or
$value2 = 1/2;
echo $value1 * $value2;
您的代码适用于加法和减法,因为-2
in$value2 = -2;
并不意味着“减二”。它的意思是“[加]减二”。对于乘法,您需要“二”或“二的倒数”
一句话,没有。
在一段中,您可以创建一个匿名函数来捕获您的含义$value2
:
$value1 = 5;
$op_and_value2 = function($value) {
return $value1 / 2;
};
echo $op_and_value2($value1); # 2
或者您可以创建一个类来封装这种行为,但这需要更多的工作。
或者你可以去黑暗的一面,并使用eval
.
$value1 = 5;
$value2 = "/ 2";
echo eval("return $value1 $value2;"); # 2
(如果“黑暗面”不够暗示,除非你想让每个人都恨你,否则不要这样做。)
更好的方法是分别存储 operator 和 value2 (尽管您仍然可以将它们放在一个结构中);运算符最好存储为函数(可能是像上面这样的匿名函数,但有两个参数,而不是硬编码2
)。
是的,但这是一种令人不快的方式:
您可以使用eval()
:
$value1 = 10;
$value2 = "/2";
echo eval("return $value1 $value2;"); // 5;
eval()
不过,在生产中运行的代码中使用我会非常谨慎。如果您最终使用这种方法,我建议您阅读以下两个讨论: