2014-12-05 4 views
3

저는 초보자 인 php입니다. 나는 두 변수변수 간의 산술 연산

$operators = array(
    "+", 
    "-", 
    "*", 
    "/" 
    ); 

$num1 = 10; 
$num2 = 5; 

$result = $num1 . $operators[array_rand($operators)] . $num2; 

echo $result; 

그것이 내가이 산술 연산을하기 위해 내 코드를 편집 할 수있는 방법이

10+5 
10-5 

같은 값을 출력 사이에 어떤 임의의 연산을 적용하려고?

답변

5

을이 작업을 수행 할 eval()을 사용할 수 있지만 , 그것은 변수가 안전하다는 것을 의지합니다.

이제
function compute($num1, $operator, $num2) { 
    switch($operator) { 
     case "+": return $num1 + $num2; 
     case "-": return $num1 - $num2; 
     case "*": return $num1 * $num2; 
     case "/": return $num1/$num2; 

     // you can define more operators here, and they don't 
     // have to keep to PHP syntax. For instance: 
     case "^": return pow($num1, $num2); 

     // and handle errors: 
     default: throw new UnexpectedValueException("Invalid operator"); 
    } 
} 

당신이 호출 할 수 있습니다 : [PHP 워드 프로세서]에서

echo compute($num1, $operators[array_rand($operators)], $num2); 
+0

'return '은 스위치의 나머지가 어쨌든 실행되는 것을 막을 것이기 때문에 내 대답에는'break;'가 필요 없다는 것을 깨달았습니다. +1 – sjagr

0

귀하에게 적합합니다.

이 기능을 사용할 수 있습니다

는 :

function calculate_string($mathString) { 
    $mathString = trim($mathString);  // trim white spaces 
    $mathString = preg_replace ('[^0-9\+-\*\/\(\) ]', '', $mathString); // remove any non-numbers chars; exception for math operators 

    $compute = create_function("", "return (" . $mathString . ");"); 
    return 0 + $compute(); 
} 

//As an example 
echo calculate_string("10+5"); 

출력 :

15 

그래서 귀하의 경우에 당신은이 작업을 수행 할 수 있습니다

$operators = array(
    "+", 
    "-", 
    "*", 
    "/" 
    ); 

$num1 = 10; 
$num2 = 5; 

echo calculate_string($num1 . $operators[array_rand($operators)] . $num2); 
+1

(http://us3.php.net/manual/en

이 많이 많은 안전 /function.create-function.php)'이 함수는 내부적으로 eval()을 수행하므로 eval()과 동일한 보안 문제가 있습니다. 또한 성능 및 메모리 사용 특성이 좋지 않습니다. " – Jakar

+1

Urrghh ...'create_function' – naththedeveloper

+1

다른 이름으로 된'eval' ... –