PHP使用两个值之间的连接逻辑运算符 - 数学

时间:2015-08-27 19:39:30

标签: php laravel math

您好我正在使用Laravel从我的数据库中检索一些值以便计算某些内容。

这是我所拥有的一个非常简单的版本(我有一个配置,其中包含多个这些值,我传递了模型名称和值,我可以动态执行此操作):

 $substitute['operator'] = '/';
 $substitute['value'] = '5';

 $select = User::->where('id','1')
                  ->pluck('holidaysperyear');


 $replace = $select.$substitute['operator'].$substitute['value'];

如果我连接逻辑运算符,则所有值都打印出来,例如21/5

但是,如果我这样做:

 $replace = $select/$substitute['value'];

除法成功完成但我遇到的问题是我有配置,可能希望运算符成倍增加或添加所以我需要灵活地传入运算符,任何想法为什么它不能像那样工作?感谢帮助!

1 个答案:

答案 0 :(得分:1)

为了做你要求的事情,你必须eval()字符串。然而,这不是一个好习惯,所以这是另一个解决方案。

您可以对每个有效的运算符使用switch语句,只需在case语句中执行正确的操作。像这样:

switch ($substitute['operator']) {
    case '*':
        $replace = $select * $substitute['value'];
        break;
    case '/':
        $replace = $select / $substitute['value'];
        break;
    case '+':
        $replace = $select + $substitute['value'];
        break;
    case '-':
        $replace = $select - $substitute['value'];
        break;
    case '%':
        $replace = $select % $substitute['value'];
        break;
    case '**':
        $replace = $select ** $substitute['value']; // or pow() if you use < PHP 5.6
        break;
    // more cases...
}