Как использовать переменную в качестве оператора? - PullRequest
1 голос
/ 14 января 2012

как я могу это сделать?

$v1=105;
$v2=90;
if ($value=='subtraction'){
    $operator='-';
}else{
    $operator='+';
}

$new_value=$v1.$operator.$v2;

Так что должно возвращаться 105-90 = 15 или 105 + 90 = 195.Но как я могу использовать переменную $ operator в качестве оператора?Например, это не работает:

eval("$new_value=$v1".$operator."$v2");

Спасибо за помощь!

Ответы [ 4 ]

5 голосов
/ 14 января 2012

Я предлагаю не делать это, но чтобы использовать eval, вы должны сделать это так:

// You need to escape the $ in $new_value
eval("\$new_value = $v1 $operator $v2");

Я предлагаю вместо этого сделать что-то вроде этого (т.е.: не используйте переменную для оператора, просто сделайте расчет):

$v1=105;
$v2=90;
if ($value=='subtraction'){
    $new_value= $v1 - $v2;
}else{
    $new_value= $v1 + $v2;
}
0 голосов
/ 14 января 2012

Почему бы не сделать $ operator функцией?

$v1 = 10;
$v2 = 20;

$substraction = function($a, $b) {
    return $a - $b;
};

[...]

$someString = 'substraction';
echo $$someString($v1,$v2);
0 голосов
/ 14 января 2012

возможно, вы можете изменить это:

<?php
$v1 = 105;
$v2 = 90;
if($value=='subtraction')
    $v2 *= -1;
$new_value = $v1 + $v2;
?>
0 голосов
/ 14 января 2012

Другой ответ лучше, но если вы действительно хотите сделать что-то хитрое, я думаю, вы можете иметь переменную для хранения функции (вместо оператора).

//untested hypothetical example

$myOperation = function Add($num1, $num2){
  return $num1+$num2;
}

Не сделали этогов PHP лично, но я думаю, что вы можете ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...