您好我正在使用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'];
除法成功完成但我遇到的问题是我有配置,可能希望运算符成倍增加或添加所以我需要灵活地传入运算符,任何想法为什么它不能像那样工作?感谢帮助!
答案 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...
}