我想打印关联数组值

I want to print associative array values

我正在做功课,包括在 php 上对用户和密码进行基本验证。我有一个一维关联数组。我可以在条件为真时打印值,但我不能只打印一个 "else" 因为 "if" 在 foreach

php的内容:

<?php 

    $error = 0;
    $mensajeError = "";

    $login = array('pepe' => 'pepon', 'maria' => 'mary', 'manolo' => 'manolito');

    if (!isset($_POST['user']) || $_POST['user'] == "") {
        $error++;
        $mensajeError .= "El usuario no puede quedar vac&iacute;o";
    }


    if (!isset($_POST['pass']) || $_POST['pass'] == "") {
        $error++;
        $mensajeError .= "<p>La contraseña no puede quedar vac&iacute;a</p>";
    }

    if ($error > 0)
    {
        echo $mensajeError;
    }

    else
    {

        $user = $_POST['user'];
        $pass = $_POST['pass'];
        foreach ($login as $clave => $valor) 
        {

            if ($user == $clave && $pass == $valor) {
                $user = $clave;
                $pass = $valor; 
                echo "Hola " . $user . ", bienvenido a la aplicación";
            }

            if ($user != $clave && $pass != $valor) {
                echo "Usuario y/o contraseña incorrectos";  
            }


        }



    }

?>

这个答案专门解释了如何检查 "any" 真值。在这个特定问题的检查单个匹配索引和索引的情况下, 更实用。


使用标志检查是否有任何匹配发生,如果 none 在 foreach 之后则拒绝:

$user = $_POST['user'];
$pass = $_POST['pass'];
$success = False;

foreach ($login as $clave => $valor) 
{
    if ($user == $clave && $pass == $valor) {
        $success = True;
        echo "Hola " . $user . ", bienvenido a la aplicación";
    }
}

if (!$success) {
    echo "Usuario y/o contraseña incorrectos";  
}

根本不需要循环,你需要做的就是检查是否有一个包含用户名的数组条目(使用isset())并且这个条目具有相同的密码.. .

$user = $_POST['user'];
$pass = $_POST['pass'];
if (isset($login[$user]) && $pass == $login[$user]) {
    echo "Hola " . $user . ", bienvenido a la aplicación";
}
else    {
    echo "Usuario y/o contraseña incorrectos";
}