PHP真实和'真实'的区别

asd*_*sdf 5 php

快问.两者之间有区别吗?

$success = true;
Run Code Online (Sandbox Code Playgroud)

$success = 'true';
Run Code Online (Sandbox Code Playgroud)

我知道他们不是==彼此,但使用它们有区别吗?

编辑:我发现在查看$ success是否为false时使用'==='代替'=='解决了我的问题.我现在的问题是,如果我只是在下面的情况下使用字符串,并坚持使用'=='?

    $User->ProcessLogin();
$loginsuccess = $User->ProcessLogin();

if ($loginsuccess == true) {    
    echo "<big>Success<big><br />";
        echo "<p>We are now redirecting you to the member area.</p>";
        echo "<meta http-equiv='refresh' content='=2;MyAccountNEW.php' />";
}
elseif ($loginsuccess == false) {
        echo "<span class='sorry'><b>Sorry, your account could not be found.</span></b><div id='shopperlogin'> <img class='shopperlogintext' src='images/shopperlogin.png'>

   <br />

    <form method='post' action='loginNEW.php' name='loginform' id='loginform'>
    <fieldset>
        <label for='username'>Username:</label><input type='text' name='username' id='username' /><br />
        <label for='password'>Password:</label><input type='password' name='password' id='password' /><br />
        <input type='submit' name='login' id='login' value='Login' />
    </fieldset>
    </form></div>";
    }
Run Code Online (Sandbox Code Playgroud)

这是班级的一部分..

    function ProcessLogin() {
    if (!empty($_POST['username']) && !empty($_POST['password'])) {
            $username = mysql_real_escape_string($_POST['username']);
            $password = md5(mysql_real_escape_string($_POST['password']));
            $checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."'");

                if(mysql_num_rows($checklogin) == 1)
                {
                     $row = mysql_fetch_array($checklogin);
                    $email = $row['EmailAddress'];

                    $_SESSION['Username'] = $username;
                    $_SESSION['EmailAddress'] = $email;
                    $_SESSION['LoggedIn'] = 1;
                    $this->loggedin = true;
                    $success = true;
                }
                else {
                    $success = false;
                }
                return $success;
            }
        }
Run Code Online (Sandbox Code Playgroud)

def*_*nes 13

任何非空字符串的计算结果为true,空字符串的计算结果为false.以下脚本可能会为您提供一些启示:

<?php
if('true' == true) {
  echo "'true' == true";
} else {
  echo "'true' != true";
}

echo '<br />';

if('false' == true) {
  echo "'false' == true";
} else {
  echo "'false' != true";
}

echo '<br />';

if('foo' == true) {
  echo "'foo' == true";
} else {
  echo "'foo' != true";
}

echo '<br />';

if('false' == false) {
  echo "'false' == false";
} else {
  echo "'false' != false";
}

echo '<br />';

if('' == true) {
  echo "'' == true";
} else {
  echo "'' != true";
}

echo '<br />';

if('' == false) {
  echo "'' == false";
} else {
  echo "'' != false";
}

?>
Run Code Online (Sandbox Code Playgroud)

这是输出:

'true' == true
'false' == true
'foo' == true
'false' != false
'' != true
'' == false
Run Code Online (Sandbox Code Playgroud)

根据要求,这里有一些比较==与===的不同值的例子.

<?php
echo "<b>'true' vs. true</b><br />";

if('true' == true) {
  echo "'true' == true<br />";
} else {
  echo "'true' != true<br />";
}

if('true' === true) {
  echo "'true' === true<br />";
} else {
  echo "'true' !== true<br />";
}

echo "<br /><b>'false' vs. true</b><br />";

if('false' == true) {
  echo "'false' == true<br />";
} else {
  echo "'false' != true<br />";
}

if('false' === true) {
  echo "'false' === true<br />";
} else {
  echo "'false' !== true<br />";
}

echo "<br /><b>1 vs. true</b><br />";

if(1 == true) {
  echo "1 == true<br />";
} else {
  echo "1 != true<br />";
}

if(1 === true) {
  echo "1 === true<br />";
} else {
  echo "1 !== true<br />";
}

echo "<br /><b>0 vs. false</b><br />";

if(0 == false) {
  echo "0 == false<br />";
} else {
  echo "0 != false<br />";
}

if(0 === false) {
  echo "0 === false<br />";
} else {
  echo "0 !== false<br />";
}

echo "<br /><b>1 vs. 'true'</b><br />";

if(1 == 'true') {
  echo "1 == 'true'<br />";
} else {
  echo "1 != 'true'<br />";
}

if(1 === 'true') {
  echo "1 === 'true'<br />";
} else {
  echo "1 !== 'true'<br />";
}

echo "<br /><b>empty string '' vs. false</b><br />";

if('' == false) {
  echo "'' == false<br />";
} else {
  echo "'' != false<br />";
}

if('' === true) {
  echo "'' === false<br />";
} else {
  echo "'' !== false<br />";
}

?>
Run Code Online (Sandbox Code Playgroud)

输出:

'真实'与真实

'true' == true
'true' !== true
Run Code Online (Sandbox Code Playgroud)

'假'与真实

'false' == true
'false' !== true
Run Code Online (Sandbox Code Playgroud)

1对比真实

1 == true
1 !== true
Run Code Online (Sandbox Code Playgroud)

0与假

0 == false
0 !== false
Run Code Online (Sandbox Code Playgroud)

1对'真'

1 != 'true'
1 !== 'true'
Run Code Online (Sandbox Code Playgroud)

空字符串''与false

'' == false
'' !== false
Run Code Online (Sandbox Code Playgroud)

  • 您能否添加一些带有 === 的示例以进行更全面的演示? (2认同)

yle*_*bre 0

true 是一个布尔值,'true' 是一个字符串。