为什么我得到一个未定义的变量错误?我在IF声明中定义它,条件总是存在的,因为有ni的性能问题,关于如何解决这个问题的任何建议?未定义的变量错误php
if(in_array($row['billing'],$list)){
$bills = array_search($row['billing'], $list);
}
echo $bills; // <-- undefined variable $bills on this line
为什么我得到一个未定义的变量错误?我在IF声明中定义它,条件总是存在的,因为有ni的性能问题,关于如何解决这个问题的任何建议?未定义的变量错误php
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
,''
等)的默认值beforehands:
$bills = 'no billing information';
if(in_array($row['billing'],$list)){
$bills = array_search($row['billing'], $list);
}
在另一方面,你不真的需要检查。如果该值不在数组中,array_search()
将返回false
反正:
如果在数组中返回针的关键,FALSE 否则。
因此可以简化事情:
$bills = array_search($row['billing'], $list);
echo $bills === false ? 'no billing information' : $bills;
你必须使用=== false
因为函数可能返回0
以及(如果该元素是第一个索引)。
'echo $ bills'is if语句 – cheesemacfly
@cheesemacfly之外,这与解决方案有什么关系? '$ bills'在if块之前被设置,所以它总会有一个值,而不管if语句。 – Benjam
如果可以的话,我会再次为清理后的代码+1。 – Benjam
$bills
变量仅存在于if statement
的范围内,即在开启和关闭括号之间。
如果要使用if语句之外的值,请先定义$bills
。例如:
$bills = '';
if(in_array($row['billing'],$list))
{
$bills = array_search($row['billing'], $list);
}
echo $bills;
或者,你可以只echo
出if语句范围值。
编辑:我错了,PHP does not have block scope。使用以下命令:
if(in_array($row['billing'],$list))
{
$bills = array_search($row['billing'], $list);
echo $bills;
}
if(isset($bills))
echo $bills
的if
声明if(in_array($row['billing'],$list))
未持有真正。因此,$bills
变量未被设置/定义。您可能需要在if
声明之前对其进行定义,或者确保if
声明在echo
之前通过。
或者,你也可以用echo
前检查其设置,
if(isset($bills))
echo $bills;
if(isset($bills)){echo $bills;}
如果什么'in_array($行[ '结算'],$列表)'是假的? – Gumbo