为什么我会收到未定义的变量错误?我在 IF 语句中定义它并且条件始终是,因为存在 ni 性能问题,关于如何解决这个问题的任何建议?
if(in_array($row['billing'],$list)){
$bills = array_search($row['billing'], $list);
}
echo $bills; // <-- undefined variable $bills on this line
看起来值 ( $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
(如果元素位于第一个索引处)。
if(isset($bills))
echo $bills
该$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;
}
该if
说法if(in_array($row['billing'],$list))
不成立。因此,$bills
变量没有被设置/定义。您要么需要在if
语句之前定义它,要么确保if
语句通过,在echo
.
或者,您还可以检查它是否在之前设置过echo
,
if(isset($bills))
echo $bills;
if(isset($bills)){echo $bills;}