如何解决foreach循环中的条件

时间:2017-12-13 08:26:35

标签: php foreach

<?php
$login_info = array('batman'=>'404','superman'=>'502');
$form_usr = "$_POST[usr]";
$form_pass = "$_POST[pass]";
$form_submit = "$_POST[submit]";

if ( isset($form_submit) ) {
    foreach ( $login_info as $user => $pass ) {
        if ($form_usr == $user && $form_pass == $pass) {
            echo "Successfully logged in !"; 
        }
        else {
            echo "bad username or password !";
        }
    }
}?>

我正在bad username or password !bad username or password !Successfully logged in !bad username or password !我该如何解决这个问题?我正在尝试在条件为真时显示Successfully logged in !,否则bad username or password !

以下是屏幕截图:https://i.stack.imgur.com/rmTiG.png

2 个答案:

答案 0 :(得分:0)

您可以完全避免循环,而只是检查变量是否存在于数组中。

<?php
$login_info = array('batman'=>'404','superman'=>'502');

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $user = isset($_POST['usr']) ? $_POST['usr'] : null;
    $pass = isset($_POST['pass']) ? $_POST['pass'] : null;

    if (isset($login_info[$user]) && $login_info[$user] == $pass) {
        echo "Successfully logged in !"; 
    } else {
        echo "bad username or password !";
    }
}
?>

答案 1 :(得分:0)

主题的变体也许,但你可以尝试这样,再次不使用循环。

{{1}}