我正在尝试从变量/数组执行运算符。
我有一个这样的数组:
Array
(
[0] => Array
(
[0] => Array
(
[0] => 6
[1] => +
[2] => 2
[3] => +
[4] => 4
)
[1] => Array
(
[0] => 6
[1] => +
[2] => 2
[3] => -
[4] => 4
)
[2] => Array
(
[0] => 6
[1] => +
[2] => 2
[3] => *
[4] => 4
)
数组中的运算符和整数总数是动态的。我可以有 7 个整数和 6 个运算符。它始终采用格式[int + op + int + op +int ....]
我想使用eval()
.我知道 eval 是邪恶的,不建议使用,但我不在公共场合使用它。
我被代码的这种平静困住了:
function getResults($array) {
$result = array();
foreach($array as $key => $subarray) {
$eval = '';
$result[$key] = array();
foreach($subarray as $subsubarray) {
$exec = '';
foreach($subsubarray as $data) {
$exec .= ' ' . $data;
}
ltrim($exec ,' ');
$result = eval("?>$exec");
echo $result;
}
}
}
当我执行这个时,我得到这个:
6 + 2 + 4
6 + 2 - 4
6 + 2 * 4
6 + 2 / 4
6 - 2 + 4
6 - 2 - 4
6 - 2 * 4
6 - 2 / 4
....
我希望得到这样的结果:
8
4
14
我应该怎么做?
除了你调用eval()
的方式之外,一切都很好:
$result = eval('return ' . $exec . ';');
我确定我不需要指出未经净化的用户输入不应该接近该功能......