4

在 PHP 中,我可以这样做:

$value1 = 5;
$value2 = -2;
echo $value1 + $value2; // 3

但是我将如何用乘法或除法来做到这一点?就像是:

$value1 = 10;
$value2 = /2;
echo $value1 (?) $value2; // 5;

我将如何尽可能简单地处理这种情况?

4

3 回答 3

5

如果只需要区分除法和乘法,

$value2 = 2;
//or
$value2 = 1/2;

echo $value1 * $value2;

您的代码适用于加法和减法,因为-2in$value2 = -2;并不意味着“减二”。它的意思是“[加]减二”。对于乘法,您需要“二”或“二的倒数”

于 2012-11-22T01:06:56.043 回答
3

一句话,没有。

在一段中,您可以创建一个匿名函数来捕获您的含义$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)。

于 2012-11-22T01:06:58.910 回答
2

是的,但这是一种令人不快的方式:

您可以使用eval()

$value1 = 10;
$value2 = "/2";
echo eval("return $value1 $value2;"); // 5;

eval()不过,在生产中运行的代码中使用我会非常谨慎。如果您最终使用这种方法,我建议您阅读以下两个讨论:

于 2012-11-22T01:09:47.597 回答