为什么在函数前使用运算符?

时间:2016-12-02 11:00:19

标签: php operators

我在1周前开始学习PHP,我正在进行一些表格测试,以便对语言产生更多的担忧,我会陷入问题小问题中为你们所做的....

我使用PHP manuale中的in_array函数来检查登录时的名字数组

该功能无法检查数组告诉我添加!in_array !!!
正常in_array无法检查姓名......

所以我明确地使用了操作员“!”在函数前面,为什么它与该运算符一起工作而不是没有呢?

   <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Forum</title>
    <meta name="Nic" content="" />
    <link rel="stylesheet" type="text/css" href="style.css"> </head>

<body>
    <?php
if(isset($_POST['submit'])){

$names = array("Nicolaus", "Solo", "Yiu", "Yang", "Darius");
$minimum = 5;
$maximum = 10;
$username = $_POST['username'];
echo '<br>';
$password = $_POST['passwoard'];
if(strlen($username) < $minimum){
echo 'Username needs to be longer then 5 carcaters !';

}

if(strlen($username) > $maximum){
echo "Username can't be longer then 10 carcaters";
}
if(!in_array($username, $names)){
echo "You are not alowed , not in database !";
} else {
echo 'Welcome';
}

echo '<br>';
echo 'Your Username is : ' . "<b>" . $username . '</b>';
echo '  Your Password is : ' . "<b>" . $password . '</b>';
}

?>
        <form action="my_from.php" method="post">
            <input type="text" name="username" placeholder="username">
            <input type="password" name="passwoard" placeholder="password">
            <input type="submit" name="submit"> </form>
</body>

2 个答案:

答案 0 :(得分:3)

!表示NOT,它是一个操作员,当你想检查某些东西是否错误时进行比较。

$raining = false;

if (!$raining){ 
    echo "its not raining"; 
}

现在您发布了代码:

if(!in_array($username, $names)){
    echo "You are not allowed , not in database !";
} else {
    echo 'Welcome';
}

in_array是一个函数,用于检查某个值是否在数组中。您正在测试$username是否在$names数组中。 如果$username不在数组中,则进行条件检查,如果是,则表示不允许$username,因为它不会成为允许的$names的一部分。 您的ELSE子句标识它在数组中,然后用户就可以登录。

你可以颠倒你的逻辑:

if(in_array($username, $names)){
    echo 'Welcome';
} else {
    echo "You are not allowed , not in database !";
}

它也会起作用。

答案 1 :(得分:1)

!符号用于否定函数的逻辑。

您真正想要做的是,如果$username的用户姓名,则您希望拒绝 $names数组。您有一个函数来检查数组中是否存在元素。因此,向其添加!运算符会否定逻辑。

if (!in_array($username, $names))

这意味着如果数组$username中存在$names NOT

使用!类似于使用条件== FALSE进行检查。但我们不能直接在该函数上使用该逻辑,因此我们选择!运算符。

没有!的示例的另一种选择是,

if (in_array($username, $names)) {
    echo "Welcome";
} else {
    echo "You are not alowed , not in database !";
}

希望这有帮助! :)