在多维数组中使用in_array

时间:2013-04-23 14:49:29

标签: php

我只是通过展示我的代码来解释:

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数组相关),但实际上并没有在数组中发布。而当我发布''(空白)时,他们永远不会更新,只能到达第二部分。

我问这里,我错过了将值作为数组发布的技巧吗?

1 个答案:

答案 0 :(得分:0)

  1. 您应该在select标签中将名称放在引号中。像这样:name="user[<?=$lines;?>]"
  2. $assigned_users应该是一个数组。
  3. 使用isset($_POST['user'][$records])检查是否存在,而不是将其与空字符串进行比较,或者只是尝试:if((@in_array($_POST['user'][$records], $assigned_users, true)==false){