我只是通过展示我的代码来解释:
if($_POST)
{
for ($records = 1; $records <= $_POST['numberofrecords']; $records++)
{
if((!in_array($_POST['user'][$records], $assigned_users, true))||($_POST['user'][$records]==''))
{
$phonePost['user'] = $_POST['user'][$records];
$phonePost['id'] = $_POST['id'][$records];
$this->autoprov_model->update_phone_user($phonePost);
}
else
{
//other actions.....
}
等...
$ assigned_users是一个列出当前所有ID的查询。
相关的html是
<select name=user[<?=$lines;?>] style="position: relative; right: 120px;" onchange="submitform(this)">
<?php if($phone['user_id']=='')echo '<option value="">Unassigned</option>'?>
<?php foreach ($users_list as $user):?>
<?php if($user['id']==$phone['user'])$selected = 'selected="selected"'; else $selected = '';?>
<option value="<?=$user['id'];?>" <?=$selected?>><?=$user['name'];?></option>
<?php endforeach;?>
</select>
发生的事情是我发布了各种ID(与$ assigned_user数组相关),但实际上并没有在数组中发布。而当我发布''(空白)时,他们永远不会更新,只能到达第二部分。
我问这里,我错过了将值作为数组发布的技巧吗?
答案 0 :(得分:0)
name="user[<?=$lines;?>]"
。$assigned_users
应该是一个数组。isset($_POST['user'][$records])
检查是否存在,而不是将其与空字符串进行比较,或者只是尝试:if((@in_array($_POST['user'][$records], $assigned_users, true)==false){
。