如何使用变量作为运算符?

发布于 2024-12-27 10:28:57 字数 319 浏览 0 评论 0原文

我该怎么做?

$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");

感谢您的帮助!

how can I do this?

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

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

So it should return 105-90=15 or 105+90=195. But how can I use the $operator variable as a operator? For example this doesn't work:

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

Thanks for the help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

秋风の叶未落 2025-01-03 10:28:58

我建议不要这样做,但是要使用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;
}

I suggest not doing this, but to use eval, you'd have to do it like this:

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

I suggest doing it something like this instead (ie: Don't use a variable for operator, just do the calculation):

$v1=105;
$v2=90;
if ($value=='subtraction'){
    $new_value= $v1 - $v2;
}else{
    $new_value= $v1 + $v2;
}
七堇年 2025-01-03 10:28:58

另一个答案更好,但如果你真的想做一些棘手的事情,我认为你可以让一个变量保存一个函数(而不是一个运算符)。

//untested hypothetical example

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

个人还没有在 PHP 中这样做过,但我认为你可以可以...

The other answer is better, but if you really want to do something tricky, I think you can have a variable hold a function (instead of an operator).

//untested hypothetical example

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

Haven't done that in PHP personally, but I think you can...

泛滥成性 2025-01-03 10:28:58

也许你可以改变这一点:

<?php
$v1 = 105;
$v2 = 90;
if($value=='subtraction')
    $v2 *= -1;
$new_value = $v1 + $v2;
?>

maybe you can change this:

<?php
$v1 = 105;
$v2 = 90;
if($value=='subtraction')
    $v2 *= -1;
$new_value = $v1 + $v2;
?>
并安 2025-01-03 10:28:58

为什么不让 $operator 成为一个函数呢?

$v1 = 10;
$v2 = 20;

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

[...]

$someString = 'substraction';
echo $someString($v1,$v2);

Why not make $operator a function?

$v1 = 10;
$v2 = 20;

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

[...]

$someString = 'substraction';
echo $someString($v1,$v2);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文