Php &引用;“真的”;还是正确,哪个更合适

Php &引用;“真的”;还是正确,哪个更合适,php,conditional,Php,Conditional,我有一个技术问题需要专家的建议。我在数据库中有一个字符串“true”的数据。但是当我检索它来测试条件时,哪一个更适合使用,即使它们都工作 if ($data == true) 或 我的直觉是使用“true”来测试存储的值是否为字符串,当数据库值存储为布尔值时,使用不带引号的true。但我想和你们确认一下 谢谢…如果它是一个字符串,那么$data==“true”就是您想要的 表达式($data==true)相当于($data),因此即使$data==“false”是字符串,它也将计算为true,

我有一个技术问题需要专家的建议。我在数据库中有一个字符串“true”的数据。但是当我检索它来测试条件时,哪一个更适合使用,即使它们都工作

if ($data == true)

我的直觉是使用“true”来测试存储的值是否为字符串,当数据库值存储为布尔值时,使用不带引号的true。但我想和你们确认一下


谢谢…

如果它是一个字符串,那么
$data==“true”
就是您想要的


表达式
($data==true)
相当于
($data)
,因此即使
$data==“false”

是字符串,它也将计算为
true
,如果它是字符串,那么
$data==“true”
就是您想要的


表达式
($data==true)
相当于
($data)
,因此即使
$data==“false”

得到确认,它的计算结果也将是
true
,至少几乎是这样。您也可以检查数据类型,但是在PHP中,您需要使用
=
操作符:

if ($data === TRUE) # boolean
if ($data === "true") # string

它被称为,它比较值和类型。通常很有帮助。

证实,至少几乎是这样。您也可以检查数据类型,但是在PHP中,您需要使用
=
操作符:

if ($data === TRUE) # boolean
if ($data === "true") # string

它被称为,它比较值和类型。通常很有用。

需要了解的重要情况是,如果值被假定为
false,那么数据库中的值将是什么

如果数据库返回
“false”
,并且您选中
$val==true
$val==true
,则只有后者将提供正确的结果

您可能需要咨询,以确保您了解您要检查的内容

此外,数据库是否有可能返回以下内容之一

"true"
"True"
"TRUE"
"TrUe"

只需对数据库值进行规范化或清理(理想情况下,将二进制值存储在布尔字段中,这样就没有必要了。

需要了解的重要情况是,如果该值被假定为
false,则该值将来自数据库

如果数据库返回
“false”
,并且您选中
$val==true
$val==true
,则只有后者将提供正确的结果

您可能需要咨询,以确保您了解您要检查的内容

此外,数据库是否有可能返回以下内容之一

"true"
"True"
"TRUE"
"TrUe"
只需规范化或清理数据库值(理想情况下,将二进制值存储在布尔字段中,这样就没有必要了。

“false”==true
为true

如果您的数据库中有一列的值只有“true”或“false”,则效率低下。请将该列转换为tinyint(或bool)

否则,在将数据库从数据库中拔出时,应考虑将代码值>“true”< /COD>和<代码>“false”<代码>转换为<代码> true < /COD>和<代码> false <代码>的布尔值。

<代码>“false”=true < /COD>是正确的。< /P> 如果您的数据库中有一列的值只有“true”或“false”,则效率低下。请将该列转换为tinyint(或bool)


否则,当你把它们从数据库中拔出时,你应该考虑将代码值>“真”和<代码>“false”<代码>转换为<代码> true < /COD>和<代码> false <代码>的布尔值。这是你想要的,虽然它们都会起作用。为了清楚起见,我建议第二个

您可以使用交互式shell在命令上测试这一点

php -a
Interactive shell

php > $x = "true";
php > echo ($x == true) ? "True!" : "oops";
True!
php > echo ($x == "true") ? "True!" : "oops";
True!
php > echo ($x === "true") ? "True!" : "oops";
True!
php > echo ($x === true) ? "True!" : "oops";
oops

请注意
==
的效果。由于值是一个字符串,因此在使用
==

时,它们并不相等。如果值在数据库中以字符串形式存储,则第二个(
If($data=“true”)
)是您想要的,尽管它们都可以工作。为了清晰起见,我建议使用第二个

您可以使用交互式shell在命令上测试这一点

php -a
Interactive shell

php > $x = "true";
php > echo ($x == true) ? "True!" : "oops";
True!
php > echo ($x == "true") ? "True!" : "oops";
True!
php > echo ($x === "true") ? "True!" : "oops";
True!
php > echo ($x === true) ? "True!" : "oops";
oops
请注意
==
的效果。由于值是字符串,因此在使用
==
时,它们不相等