2011-10-25 11 views
5

Mam następujący ciąg.Operacja numeryczna za pomocą ciągu znaków

$option = '+'; 
$value = '100'; 

Chcę utworzyć nową wartość za pomocą powyższych parametrów.

ex: - $newValue = 222 + 100;

jaki sposób można zrobić to za pomocą powyższych parametrów? w następujący sposób

$newValue = 222 $option $value; 
+0

* (końcówka) * [ "Czyste Ta Code lks - Dziedziczenie, polimorfizm i testowanie "(https://www.youtube.com/watch?v=4F72VULWFvc) – Gordon

Odpowiedz

4
<?php 

$option = '+'; 
$value = '100'; 

eval("\$newValue=" . 222 . $option . $value . ';'); 
var_dump($newValue); 
+8

To jest bardzo niebezpieczny sposób! –

+1

Jeśli wywołujesz funkcję ** eval() **, upewnij się, że masz w ** ** opcję ** i ** $ wartość ** zmienne tylko operatory, które chcesz obsługiwać i numery. –

+0

Tak. Prawdziwe. Ale już znam operatora. –

5
$oldValue = 222; 
switch ($option) { 
    case '+': 
    $newValue = $oldValue + $value; 
    break; 
} 
+0

i gdzie jest' $ value' w twoim kodzie? – user973254

+1

'$ newValue = $ oldValue + $ value;' – Sebastian

4
switch($option){ 
case '+': 
    $newValue = 222 + $value; 
    break; 

} 


echo $newValue; 

nadzieję, że pomoże

10
function operate($a, $b, $opt){ 
    switch ($opt) { 
     case '+': 
      $ret = $a + $b; 
      break; 
     case '-': 
      $ret = $a - $b; 
      break; 
     case '*': 
      $ret = $a * $b; 
      break; 
     case '/': 
      $ret = $a/$b; 
      break; 
     default: 
      throw new Exception('Unsupported operation!'); 
    } 
    return $ret; 
} 

Edycja

$option = '+'; 
echo operate(222,100,$option); 
+2

dlatego moja odpowiedź jest lepsza, a moja odpowiedź jest po prostu leniwą :) i zakładając, że użytkownik ją dostanie, :) Edytowałem ją trochę, jak to nazwać ale +1 za to :) – Val

+1

Chciałbym dać ci jeszcze +1 za "wyrzucenie nowego wyjątku" :) – Val

Powiązane problemy