我在PHP中设置了这些变量:
$settings["operator"] = '/';
$settings["figure"] = '0.6';
然后我想在另一个变量上使用上面的算法来计算出一个最终的结果:
$total = ($var->price / 0.6);
我试过了:
$total = ($var->price $settings["operator"] $settings["figure"]);
但我收到错误是因为代码不正确:
解析错误:语法错误,意外' $ settings' (T_VARIABLE)'
如何使用这些变量来创建计算?
答案 0 :(得分:3)
您必须进行切换或类似的操作。
switch($settings["operator"]){
case "/":
$total = $var->price / $settings["figure"];
break;
case "+";
$total = $var->price + $settings["figure"];
break;
//add others under here
}
答案 1 :(得分:1)
eval()
绝对没有错。这对很多事情都很好,你只需要知道如何安全地使用它。我不会使用开关,因为它不灵活:
$allowed = array('/', '*', '-', '+');
if(in_array($settings["operator"], $allowed) && is_numeric($settings["figure"])) {
eval('$result = ' . $var->price . $settings["operator"] . $settings["figure"] . ';');
}
echo $result;
或者更具可读性:
eval("\$result = {$var->price} {$settings['operator']} {$settings['figure']};");
答案 2 :(得分:0)
[...]语法不可用。您可以做的最好的是eval(),这是不推荐的,特别是如果$ e来自用户输入(即表格)[...]
而是按照他的建议使用开关:
$settings["operator"] = '/';
$settings["figure"] = '0.6';
switch ( $settings["operator"] ) {
case '/':
$total = $var->price / $settings["figure"];
break;
// ...
}
答案 3 :(得分:0)
PHP不以这种方式支持变量运算符。它本质上是试图处理以下$total = (number string string)
因此语法错误。
PHP支持variable functions,因此您可以尝试以下操作:
//poke around the PHP manual and you will find functions that do this kind of thing.
function doDiv($a,$b) {
return ($a/$b):
}
$settings['someMathFunction'] = 'doDiv';
$settings['figure] = 0.6;
$total = $settings['someMathFunction']($var->price, $settings['figure']);
这是非常可怕的代码。有没有一个你不会分裂的情况?如果没有,则Y.A.G.N.I