2016-10-19 24 views
0

我想在PHP中創建一個計算器現在我已經寫了一個函數在PHP中添加幾個數字,但它的concatenate而不是添加它可以有人請幫我指導做任務。現在我們可以將一個字符串轉換爲一個標誌php

function cal($val1 , $opt , $val2){ 
    return $sum = $val1 . $opt . $val2; 
} 

,如果我打電話這樣的功能:

echo cal(4,"+",5); 

它返回4+5但我正在尋找9一個答案 可以在可能的是,$選擇工作作爲一個操盤手的一個字符串,我可以根據運營商增加或減少

+0

好,'.'是連接運算符...所以它應該怎麼做任何事情* *,但串聯? –

+0

你應該使用'eval()' – Mohammad

+3

@Mohammad你應該*永遠不要*使用'eval()',除非絕對沒有別的辦法。在這種情況下,有。看看運營商是什麼,並實現該功能。 –

回答

1

你應該做一個if語句或開關案例之一;

例如

if ($opt =='+'){ 
    return $val1+$val2; 
}else if($opt =='-'){ 
    return $val1-$val2; 
} .... etc 
0

您可以使用eval()運行字符串作爲密碼。使用前應檢查數值。

function cal($val1 , $opt , $val2){ 
    if (is_numeric($val1, $val2) && preg_match("/[+-\/\*%]/", $opt)) 
     return eval($val1 . $opt . $val2); 
} 
0

好喲可以使用一個很基本的方法爲你的程序 像

switch ($opt) { 
    case "+": 
    echo $val1 + $val2; 
    break; 
    case "-": 
    echo $val1 - $val2;; 
    break; 
    case "*": 
    echo $val1 * $val2;; 
    break; 
    ... 
    default: 
    code to be executed if $opt is different from all labels; 
} 
0

您可以使用eval用於此目的,但仔細驗證數據。正如手冊所述:

eval()語言結構非常危險,因爲它允許執行任意PHP代碼。因此不鼓勵它的使用。如果您已經仔細覈實沒有其他選擇而不是使用此構造,請特別注意不要將任何用戶提供的數據傳遞給它,而不事先進行適當的驗證。

function cal($val1 , $opt , $val2) 
{ 
    if (!is_numeric($val1)) return false; 
    if (!is_numeric($val2)) return false; 
    if (!in_array($opt, ["+", "-", "*", "/"])) return false; 

    return eval("return $val1 $opt $val2;"); 
} 

echo cal(3.2, "*", 4.2); 

Live example

相關問題