不明白这个数组结果是如何发生的

dav*_*ave 1 php arrays login

我正在努力学习构建登录序列.在一个部分中,我想确定用户是否将3个必填字段中的任何一个留空:

foreach ( $_POST as $key => $value )
   {
      if ( $key = "school_code" ||
           $key = "user_name"   ||
           $key = "password" )
         {
            if ( $value == "" )
               {
                  $a_blank[] = $key ;
               }  
         }  
   }

if( @sizeof( $a_blank ) > 0 )
   {
      echo '<pre>';
      print_r( $a_blank );
      echo '</pre>';
   }
Run Code Online (Sandbox Code Playgroud)

如果用户没有为school_code或user_name输入任何内容,但是输入密码然后单击"提交",则结果为:

Array
(
    [0] => 1
    [1] => 1
)
Run Code Online (Sandbox Code Playgroud)

为什么数组结果不是这样的(即$ key的值)?

Array
(
    [0] => school_code
    [1] => user_name
)
Run Code Online (Sandbox Code Playgroud)

谢谢!

Sam*_*son 7

比较是与==,而不是=.

$key = "school_code" || $key = "user_name" || $key = "password"
Run Code Online (Sandbox Code Playgroud)

应该用==代替.你也可以用稍微冗长的方式写这个:

$options = array("school_code","user_name","password");
if (in_array($key, $options) && empty($value)) {
    $a_blank[] = $key;
}
Run Code Online (Sandbox Code Playgroud)