0

我知道这不是这样做的方法,但我在尝试使用条件语句设置变量时遇到了一些麻烦。

对于某些上下文,$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 语句而不是我上面写的。下面的所有评论都非常有帮助感谢您的帮助。

4

4 回答 4

1

$foo_1并且$foo_2永远不会设置。这就是为什么如果$foo没有设置,$bar也不会设置。

于 2013-03-28T21:24:42.577 回答
0

如果您的条件中的代码没有传递给 PHP 引擎,当您要求设置变量时,很可能没有设置...您也可以尝试使用 switch/case 块

于 2013-03-28T21:32:02.967 回答
0

请进一步澄清您的代码,因为我看不到您的 $baz_1 变量状态和初始化位置?

正如逻辑所说,您必须将 $foo_1 乘以 $qux 我不知道 $baz_1,$baz_2 变量是什么意思

然后,如果您正在测试 $foo_1,$foo_2 您必须根据测试变量而不是可能未设置的新变量进行计算

更多解释如果设置了 $foo,$foo_1,$foo_2 但未设置 $baz,$baz_1,$baz_2 我没有看到对 $baz 变量的任何操作,请澄清情况。

于 2013-03-28T21:26:59.470 回答
0

Oswald 和 Royal Bg 是正确的,您的变量可能永远不会设置。我会以这种方式编写代码(假设您允许 $baz 和 $qux 变量的值为零):

$bar = 0;   // initialize the variable so it won't be null
if(isset($foo) && isset($baz) && isset($qux)) {
  $bar = ($baz * 52) * ($qux);
} 
else if(isset($foo_1) && isset($ba_1z) && isset($qux)) {
  $bar = ($baz_1 * 12) * ($qux);
}
else if(isset($foo_2) && isset($baz_2) && isset($qux)) {
  $bar = ($baz_2 * $qux);
}

然后,您可以使用 empty() 函数检查 $bar 的值,如果值为 null、零或空字符串,则返回 true。

于 2013-03-28T21:47:12.257 回答