2010-12-09 5 views
0

eval()을 사용하여 이런 식으로 할 수 있습니다.실행해야 할 변수의 특정 문자열에 대해 eval을 사용하지 않으려면 어떻게해야합니까?

$result = eval("return ".$value1.$operator.$value2.";"); 

연산자는 변수 또는 db 필드에 있습니다.

eval를 사용하지 않고 동일한 결과를 얻으려면 어떻게해야합니까? 가능한가?

값/연산자가 사용자 입력이 아니기 때문에 보안 문제는 아니지만, PHP 설명서의 this comment이 아무 것도없는 경우 성능 문제가 될 수 있습니다. 게다가 어떤 시점에서 Facebook의 HipHop을 사용해보고 싶다면 eval의 모든 용도를 다른 것으로 바꿔야합니다.

+0

http://stackoverflow.com/questions/1015242 –

답변

2
if(strcmp($operator, "+") == 0) { 
    return $value1 + $value2; 
} 
else if(strcmp($operator, "*") == 0) { 
return $value1 * $value2; 
} 
... 

, 당신은 또한 switch()

+1

'스위치'를 사용하는 것이 더 좋습니다. – Gumbo

1

음을 사용할 수 있습니다, 나는 연산자에 대한 확실하지 않다,하지만 당신은 함수 이름과 같은 것을 할 수 있습니다

function add($x, $y) { 
    return $x + $y; 
} 

$value1 = 1; 
$value2 = 2; 
$func = "add"; 

$result = $func($value1, $value2); 

당신에게 내장 함수를 사용하여이 작업을 수행 할 수도 있습니다.

$func = 'array_sum'; 
$result = $func(array($value1, $value2)); 
관련 문제