2016-12-02 12 views
-1

私は1週間前にPHPを学び始めました。言語の不安を取り除くためにいくつかのフォームテストを行っています。私はあなたに小さな問題が残っています....なぜ関数の前で演算子を使用していますか?

PHPのin_array関数を使用しました。ログイン時にアレイの名前をチェックするマニュアル

この機能は配列の検査には機能しませんでした。私は!in_arrayを追加します。
普通in_arrayは名前を確認するためには機能しませんでした...

だから私はblaindlyオペレータ "!"関数の前で、なぜそれがその演算子で動作し、その演算子で動作しなかったのでしょうか?

<!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> 

のTy

+4

[PHPで関数の前に感嘆符が本当に何を意味するのか](http://stackoverflow.com/questions/10052719/what-does-an-exclamation-mark-before-a-function -really-mean-in-php) – Roberrrt

+0

関連するコードを共有できますか? – Mureinik

+0

だから私はちょうど混乱している、なぜ私は "!"関数in_arrayの演算子は機能しますか? – Nicolaus

答えて

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 !"; 
} 

をそして、それは同様に動作します。

+0

ありがとうございましたleo_ap私は新しいことを理解しています。私はこの新機能のように読んでいます:もしin_array変数ではないなら、echo:あきらめられません! – Nicolaus

1

!記号は、関数の論理を否定するために使用されます。彼/彼女の名前は$names配列のされていない場合は、$usernameユーザーを拒否し

は、あなたが実際にやってみたいことはあなたが欲しい、です。ある要素が配列内に存在するかどうかをチェックする関数があります。そこで、!演算子を追加すると、ロジックが無効になります。 $usernameアレイ$names存在しない場合を意味

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

!を使用することは、条件== FALSEでチェックするのと同様です。しかし、そのロジックを直接その関数に使うことはできないので、我々は!演算子を選択しました。 !なし

ご例えば

もう一つの選択肢は、

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

でこの情報がお役に立てば幸い!:)

関連する問題