全部, 我有以下代码:
$qry = "Select * from vendor_options order by vendor_option_name ASC";
$result = mysql_query($qry);
while($resultset = mysql_fetch_array($result)){
if(isset($_SESSION['pav_choosen_vendor_categories'])){
for($z=0;$z<$_SESSION['pav_choosen_vendor_categories'];$z++){
$sVendorId = $_SESSION['pav_vendor_categories_' . $z];
if($sVendorId==$resultset['vendor_option_id']){
$vendor_cats_choosen[] = $sVendorId;
}
}
if(in_array($resultset['vendor_option_id'],$vendor_cats_choosen)){
?>
<input type="checkbox" value="<?php echo $resultset['vendor_option_id']; ?>" class="select_vendor" name="vendor_categories[]" checked><?php echo $resultset['vendor_option_name']; ?><br>
<?php
}else{
?>
<input type="checkbox" value="<?php echo $resultset['vendor_option_id']; ?>" class="select_vendor" name="vendor_categories[]"><?php echo $resultset['vendor_option_name']; ?><br>
<?php
}
}
}
我正在尝试检查mysql_fetch_array中返回的值是否已经在我的数组中。假设它在数组中找到的第一个值是在while循环的第四次迭代中。我会收到以下错误:
Warning: in_array() expects parameter 2 to be array, null
一旦达到数组中的值,其余部分就可以正常工作。为什么给第一对夫妇一个错误呢?感谢。
答案 0 :(得分:2)
看起来您尚未将$vendor_cats_chosen
初始化为数组,因此如果条件if($sVendorId==$resultset['vendor_option_id'])
不为真,则不会向其附加任何元素,将其隐式转换为数组。< / p>
在while
循环之前初始化它。您应该在使用之前始终初始化数组。
// Initialize the array
$vendor_cats_chosen = array();
while($resultset = mysql_fetch_array($result)){
....
现在,当你的in_array()
语句执行时,数组可能为空,但是它将是一个有效的数组。
// $vendor_cats_chosen might be an empty array, or may have elements.
if(in_array($resultset['vendor_option_id'],$vendor_cats_choosen)){
答案 1 :(得分:1)
问题是您的数组并不总是创建。要解决此问题,请添加
$vendor_cats_choosen = array();
代码中while
之前的某个地方。
答案 2 :(得分:1)
您只能在$vendor_cats_choosen
语句中填充数组if
,这意味着它可能不包含任何值。你也没有在开始填充它的循环之前声明它 - 无论如何你应该这样做,因为为未声明的数组添加一个值会发出E_NOTICE
。
添加行
$vendor_cats_choosen = array();
...在脚本的顶部,错误将消失。如果您认为此数组应包含值,则可能需要检查if
语句中的逻辑。
答案 3 :(得分:1)
为了消除警告信息,可以采用两种方法:
1)在生成警告消息的语句之前使用@
(但是,这不是一种可取的工程方法)
2)在使用array
对象之前,可以在if-else
中过滤掉它。
例如,在您的情况下,您可以添加此行
if( $vendor_cats_choosen ){
if(in_array($resultset['vendor_option_id'],$vendor_cats_choosen)){
?>
<input type="checkbox" value="<?php echo $resultset['vendor_option_id']; ?>" class="select_vendor" name="vendor_categories[]" checked><?php echo $resultset['vendor_option_name']; ?><br>
<?php
}else{
?>
<input type="checkbox" value="<?php echo $resultset['vendor_option_id']; ?>" class="select_vendor" name="vendor_categories[]"><?php echo $resultset['vendor_option_name']; ?><br>
<?php
}
} ?>