当空字符串使用 explode() 函数时 返回为 Array ( [0] => ) 而非 Array ( )
相应的 count() 值为 1 而非 0
checkbox提交过来一个数组,为了将数组中的值插入到SQL语句执行,需要将数组的键值使用逗号隔开:
index.html
<form action="2.php" method="post">
<input name="select[]" type="checkbox" value="1" />1
<input name="select[]" type="checkbox" value="2" />2
<input name="select[]" type="checkbox" value="3" />3
<input type="submit" value="submie" />
</form>
2.php
<?php
$array = $_POST["select"];
$select = implode(",", $array);
echo $select;
?>
3.个checkbox全都选择提交后,输出的结果为:1,2,3,可以直接插入到SQL语句执行
一般我们会使用explode来分割id字符串之类的数据
<?php
$ids = '1,2,3,4';
$data = explode(',', $ids);
if($data){
foreach($data as $k=>$v){
// do sth
}
}
?>
正常情况下ids不为空,看代码也不会发现什么问题,因为有判断if(data);一般会认为已经做了空的处理。
但实际情况却是ids=null, data却不是空,会导致foreach里执行的代码出问题。
<?php
$ids = null;
$data = explode(',', $ids);
if($data){
print_r($data);
}else{
echo 'null';
}
?>
因为ids=null,使用explode分割,得出的数组是Array ( [0] => )而不是Array()。
所以判断需要修改一下才能避免问题发生
<?php
$ids = null;
$data = explode(',', $ids);
if(isset($data[0]) && $data[0]){
foreach($data as $k=>$v){
// do sth
}
}
?>