$operators = array(
"+",
"-",
"*",
"/"
);
foreach($operators as $key => $opp){
//echo "key: $key, opperator: $opp <br />";
echo $result = 4 . $opp . 4 . "<br />";
}
为什么我的代码不计算可能的组合?
喜欢:
echo $result = 4 + 4;
8
$operators = array(
"+",
"-",
"*",
"/"
);
foreach($operators as $key => $opp){
//echo "key: $key, opperator: $opp <br />";
echo $result = 4 . $opp . 4 . "<br />";
}
为什么我的代码不计算可能的组合?
喜欢:
echo $result = 4 + 4;
8
点 (".") 是 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,需要 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 />";
}
因为你只是在用字符串做一些事情。他们不被视为操作员。
你当然可以使用 eval:
$x = eval(4 . $opp . 4 );
echo $x;