0

我正在尝试从变量/数组执行运算符。

我有一个这样的数组:

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

我该怎么做?

4

1 回答 1

2

除了你打电话的方式外,一切都很好eval()

$result = eval('return ' . $exec . ';');

我确定我不需要指出未经处理的用户输入不应该在该功能附近的任何地方......

于 2013-09-16T17:49:50.223 回答