首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP true和'true‘的区别

PHP true和'true‘的区别
EN

Stack Overflow用户
提问于 2009-06-15 18:55:52
回答 5查看 2.6K关注 0票数 5

快速问答。两者之间有区别吗?

代码语言:javascript
复制
$success = true;

代码语言:javascript
复制
$success = 'true';

我知道它们彼此之间不是“==”,但是使用它们有区别吗?

编辑:我发现在查看$success是否为false时,使用'===‘而不是'==’解决了我的问题。我现在的问题是,在下面这样的情况下,我应该只使用字符串,并坚持使用'==‘吗?

代码语言:javascript
复制
    $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>";
    }

这是课程的一部分..

代码语言:javascript
复制
    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;
            }
        }
EN

回答 5

Stack Overflow用户

发布于 2009-06-15 19:01:17

任何非空字符串的计算结果为true,而空字符串的计算结果为false。下面的脚本可能会为您提供一些帮助:

代码语言:javascript
复制
<?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";
}

?>

下面是输出:

代码语言:javascript
复制
'true' == true
'false' == true
'foo' == true
'false' != false
'' != true
'' == false

应要求,这里有一些比较==和===各种值的更多示例。

代码语言:javascript
复制
<?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 />";
}

?>

输出:

'true‘vs. true

代码语言:javascript
复制
'true' == true
'true' !== true

'false‘vs.

代码语言:javascript
复制
'false' == true
'false' !== true

1与真正的

代码语言:javascript
复制
1 == true
1 !== true

0与false

代码语言:javascript
复制
0 == false
0 !== false

1 vs. 'true'

代码语言:javascript
复制
1 != 'true'
1 !== 'true'

空字符串'‘与false

代码语言:javascript
复制
'' == false
'' !== false
票数 13
EN

Stack Overflow用户

发布于 2009-06-15 18:58:30

首先是一个布尔值。第二个是一个字符串

你可以看到他们的不同之处。

代码语言:javascript
复制
$success = 'true';
$success2 = true;

var_dump($success);
var_dump($success2);

也可以看看这个结果

代码语言:javascript
复制
var_dump($success == $success2);
var_dump($success === $success2);

您还应该学习PHP的整洁信息,帮助您更好地理解this type comparison table.

票数 4
EN

Stack Overflow用户

发布于 2009-06-15 19:05:27

当我绝对需要布尔答案时,我总是尝试使用限制性更强的===!==,所以:

代码语言:javascript
复制
$success = 'true';
if( $success === 'false'){
...
}

以防万一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/997733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档