【发布时间】:2013-03-28 21:17:23
【问题描述】:
我知道这不是这样做的方法,但我在尝试使用条件语句设置变量时遇到了一些麻烦。
对于某些上下文,$foo、$foo_1 和 $foo_2 正在检查是否设置了表单字段,如果设置了,则将 $bar 设置为等于每个条件附带的计算。
if(isset($foo)) {
$bar = ($baz * 52) * ($qux);
}
if(isset($foo_1)) {
$bar = ($baz_1 * 12) * ($qux);
}
if(isset($foo_2)) {
$bar = ($baz_2 * $qux);
}
这是因为现有代码在计算中使用了 $bar
$a = ($b / $bar)
和$a 在各种情况下会进一步向下传递。
事实上,只有第一个 $foo 条件正确传递了 $bar,所有其他条件 $bar 输出为 NULL。
编辑:澄清上面的代码(不正确)并更新下面的示例:
$foo = isset($form['first'] ? $form['first'] : '';
$foo_1 = isset($form['second'] ? $form['second'] : '';
$foo_2 = isset($form['third'] ? $form['third'] : '';
if(isset($foo)) {
$bar = ($foo * 52) * $qux;
}
if(isset($foo_1)) {
$bar = ($foo_1 * 12) * $qux;
}
if(isset($foo_2)) {
$bar = $foo_2 * $qux;
}
Revent、Oswald 和 RoyalBG 的建议指出我的代码没有正确设置变量,情况确实如此。 $baz、$baz_1、$baz_2 已弃用且不存在,并替换为 $foo、$foo_1、$foo_2 以伴随所需输入的条件。一旦我把它清理干净,我将使用 switch 语句而不是我上面写的。以下所有 cmets 都非常有帮助 感谢您的帮助。
【问题讨论】:
-
你是乘法,不用括号。另外,请记住这些
if不是相互排斥的。 -
你没有展示足够多的代码来让我真正提供帮助,但据我所知,我会说几乎可以肯定你的代码可以写得更好。在codereview.stackexchange.com 寻求改进代码的帮助可能会让您受益
-
更新后的例子给出了解析错误。
标签: php switch-statement conditional case