如何使用运算符数组进行计数


How to count with an array of operators

$operators = array(
    "+",
    "-",
    "*",
    "/"
);
foreach($operators as $key => $opp){
    //echo "key: $key, opperator: $opp <br />";
    echo $result = 4 . $opp . 4 . "<br />";
}

为什么我的代码不计算可能的组合?

喜欢:

echo $result = 4 + 4;

8

你可以避免使用一些 anon 函数来评估,需要 5.3+

$operators = array(
    "+" => function($l,$r) { return $l + $r; },
    "-" => function($l,$r) { return $l - $r; },
    "*" => function($l,$r) { return $l * $r; },
    "/" => function($l,$r) { return $l / $r; },
);
foreach($operators as $key => $opp){
    //echo "key: $key, opperator: $opp <br />";
    echo $result = $opp(4,4). "<br />";
}

点 (".") 是 PHP 中字符串的连接运算符。动态类型化使所有这些都成为字符串。实际上你得到的和:

echo $result = "4 + 4 <br />";

按照上一个答案中的说法使用 eval。

foreach($operators as $key => $opp){
    echo $result = eval("echo 4 $opp 4;") . "<br />"; // eval should contain valid code
}

因为你只是在用字符串做一些事情。他们不被视为操作员。

你当然可以使用 eval:

$x = eval(4 . $opp . 4 );
echo $x;