快速问答。两者之间有区别吗?
$success = true;和
$success = 'true';我知道它们彼此之间不是“==”,但是使用它们有区别吗?
编辑:我发现在查看$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>";
}这是课程的一部分..
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;
}
}发布于 2009-06-15 19:01:17
任何非空字符串的计算结果为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";
}
?>下面是输出:
'true' == true
'false' == true
'foo' == true
'false' != false
'' != true
'' == false应要求,这里有一些比较==和===各种值的更多示例。
<?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
'true' == true
'true' !== true'false‘vs.
'false' == true
'false' !== true1与真正的
1 == true
1 !== true0与false
0 == false
0 !== false1 vs. 'true'
1 != 'true'
1 !== 'true'空字符串'‘与false
'' == false
'' !== false发布于 2009-06-15 18:58:30
首先是一个布尔值。第二个是一个字符串
你可以看到他们的不同之处。
$success = 'true';
$success2 = true;
var_dump($success);
var_dump($success2);也可以看看这个结果
var_dump($success == $success2);
var_dump($success === $success2);您还应该学习PHP的整洁信息,帮助您更好地理解this type comparison table.。
发布于 2009-06-15 19:05:27
当我绝对需要布尔答案时,我总是尝试使用限制性更强的===或!==,所以:
$success = 'true';
if( $success === 'false'){
...
}以防万一。
https://stackoverflow.com/questions/997733
复制相似问题