1

为什么我会收到未定义的变量错误?我在 IF 语句中定义它并且条件始终是,因为存在 ni 性能问题,关于如何解决这个问题的任何建议?

    if(in_array($row['billing'],$list)){
    $bills = array_search($row['billing'], $list);
    }

    echo $bills; // <-- undefined variable $bills on this line
4

5 回答 5

3

看起来值 ( $row['billing']) 确实不在数组 ( $list) 中,因此in_array()返回 false。所以$bills永远不会被定义,因为里面的代码if 永远不会运行。

可以肯定的是,使用您选择的默认值( 、 等)预先定义null''

$bills = 'no billing information';
if(in_array($row['billing'],$list)){
    $bills = array_search($row['billing'], $list);
}

另一方面,您实际上并不需要该检查。如果该值不在数组中,则无论如何array_search()都会返回:false

如果在数组中找到 needle 的键,则返回它,否则返回 FALSE。

所以你可以简化事情:

$bills = array_search($row['billing'], $list);
echo $bills === false ? 'no billing information' : $bills;

您必须使用=== false,因为该函数也可能返回0(如果元素位于第一个索引处)。

于 2012-12-20T22:52:44.557 回答
1
if(isset($bills))
 echo $bills
于 2012-12-20T22:53:45.447 回答
0

$bills变量仅存在于 的范围内if statement,即在左大括号和右大括号之间。

如果要在 if 语句之外使用值,请在$bills前面定义。例如:

   $bills = '';
   if(in_array($row['billing'],$list))
   {
        $bills = array_search($row['billing'], $list);
   }

    echo $bills;

或者,您可以只echo取出 if 语句范围内的值。

编辑:我错了,PHP 没有块作用域。使用以下内容:

 if(in_array($row['billing'],$list))
    {
        $bills = array_search($row['billing'], $list);
        echo $bills;
   }
于 2012-12-20T22:52:57.490 回答
0

if说法if(in_array($row['billing'],$list))成立。因此,$bills变量没有被设置/定义。您要么需要在if语句之前定义它,要么确保if语句通过,在echo.

或者,您还可以检查它是否在之前设置过echo

if(isset($bills))
  echo $bills;
于 2012-12-20T22:55:21.303 回答
0
if(isset($bills)){echo $bills;}
于 2012-12-20T22:55:39.490 回答