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

PHP使用两个值之间的串联逻辑运算符-数学,php,laravel,math,Php,Laravel,Math,嗨,我正在使用Laravel从数据库中检索一些值,以便计算一些东西 这是我拥有的一个非常简单的版本(我有一个配置,其中有多个值,我传递模型名称和值,我可以动态地执行此操作): 如果我连接逻辑运算符,则所有值都会打印出来,例如21/5 但是,如果我这样做: $replace = $select/$substitute['value']; 除法是成功的,但我的问题是,我有一个配置,它可能希望操作符被乘法或加法,所以我需要灵活性来传递操作符,你知道为什么它不能这样工作吗?谢谢你的帮助 要执行您要求

嗨,我正在使用Laravel从数据库中检索一些值,以便计算一些东西

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

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

但是,如果我这样做:

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

除法是成功的,但我的问题是,我有一个配置,它可能希望操作符被乘法或加法,所以我需要灵活性来传递操作符,你知道为什么它不能这样工作吗?谢谢你的帮助

要执行您要求的操作,您必须
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...
}
开关($substitute['operator'])){
案例“*”:
$replace=$select*$substitute['value'];
打破
案例“/”:
$replace=$select/$substitute['value'];
打破
格“+”:
$replace=$select+$substitute['value'];
打破
案例'-':
$replace=$select-$substitute['value'];
打破
案例“%”:
$replace=$select%$substitute['value'];
打破
案例“**”:
$replace=$select**$substitute['value'];//如果使用
您必须
eval()
否则PHP解释器如何知道应该运行它。如果工作正常,请远离
eval()
。连接不是一个数学运算。这是一个字符串操作。您希望在连接后
eval
字符串-这不是一个好的编程实践。
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...
}