Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查未知变量的值和类型_Php - Fatal编程技术网

Php 如何检查未知变量的值和类型

Php 如何检查未知变量的值和类型,php,Php,我有一个变量可以是int或bool,这是因为我查询它的数据库在某个点上将变量类型从bool更改为int,其中现在1为true,0为false 由于php使用“==”是“微妙的”,我想问一下,这是否正确,为什么要知道该变量是否为真: if($wallet->locked === 1 || $wallet->locked === true) 我想我这样问:类型是int和one吗?或者var类型是bool和true 您将如何解决这个问题?您的解决方案似乎很完美,但您也可以使用。之后,您可

我有一个变量可以是int或bool,这是因为我查询它的数据库在某个点上将变量类型从bool更改为int,其中现在1为true,0为false

由于php使用“==”是“微妙的”,我想问一下,这是否正确,为什么要知道该变量是否为真:

if($wallet->locked === 1 || $wallet->locked === true)
我想我这样问:类型是int和one吗?或者var类型是bool和true


您将如何解决这个问题?

您的解决方案似乎很完美,但您也可以使用。之后,您可以使用“整数”或“布尔值”检查返回值。根据结果,您可以按需要的方式处理数据

解决方案#1。如果
$wallet
的值为
false
0
,则PHP不会费心检查其类型(因为
&&
运算符在PHP中短路):

解决方案#2(取决于您想要实现的目标):

将产生:

false
true

将产生:

false
true

如果有帮助,请告诉我

您的代码是正确的

它确实会检查类型是否为且值是否为
1
,或者类型是否为且值是否为
true

表达式
($x===1 | |$x===true)
在其他情况下都将为false

如果您知道您的变量已经是整数或布尔值,并且您可以使用除
0
以外的所有整数计算为
true
,那么您可以使用:

if($wallet->locked) {

无论何时使用上述表达式,它都是正确的,但对于像
-1、2、1000
或任何其他非零整数这样的值也是正确的。

只需使用
=
。然后
1
true
都为true。
$wallet->locked=(布尔)$wallet->locked如果($wallet->锁定){}
true
if($wallet->locked) {