2013-09-16 1 views
0

변수/배열에서 연산자를 실행하려고합니다.변수에서 연산자를 실행하십시오.

는 I 배열 이렇게 가지고 배열 내의

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 
       ) 

총 정수 연산자 및 동적이다. 저는 6 명의 연산자로 7 개의 정수를 가질 수 있습니다. 항상 형식입니다 [int + op + int + op +int ....]

나는 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; 
     } 

    } 
} 

내가 이것을 받기를 실행합니다 :

나는 코드의 평화와 붙어

8 
4 
14 
: 나는 같은 결과를 얻을 것으로 기대하고있다

6 + 2 + 4 
6 + 2 - 4 
6 + 2 * 4 
6 + 2/4 
6 - 2 + 4 
6 - 2 - 4 
6 - 2 * 4 
6 - 2/4 
.... 

어떻게해야합니까? 떨어져 당신이 eval()를 호출하는 방식에서

답변

2

모두의 미세 :

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

은 내가 unsanitised 사용자 입력이 어디 그 함수가 옆되어서는 안된다는 점을 지적 할 필요가 없습니다 확신합니다 ..

+0

감사합니다. 나는 eval이 올바른 방법으로 사용하지 않을 때 위험하다는 것을 안다. –

관련 문제