我试图获取变量类型,但我不知道为什么,总是说变量是一个字符串。
这是我的对象:
$ question
stdClass Object
(
[reply_id] => 8
[q_key] => 35BBs2xy1346230680
[answer] => 1
)
echo $question->answer." is a ".gettype($question->answer);
Run Code Online (Sandbox Code Playgroud)
输出为:
1是一个字符串
但是1是整数...
我究竟做错了什么 ?
如果该值是从$_GET或传递的,$_POST则将其自动视为字符串。如果它是从mysql查询返回的,则以字符串形式返回。
充其量,您可以使用settype将其设置为整数。话虽如此,PHP 在类型及其值方面相当自由。
settype的示例:
<?php
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo is now 5 (integer)
settype($bar, "string"); // $bar is now "1" (string)
?>
Run Code Online (Sandbox Code Playgroud)
类型注释:
PHP在变量声明中不需要(或不支持)显式类型定义。变量的类型由使用该变量的上下文确定。也就是说,如果将字符串值分配给变量$ var,则$ var成为字符串。如果然后将一个整数值分配给$ var,它将变成一个整数。
PHP自动类型转换的一个示例是加法运算符“ +”。如果两个操作数中的任何一个都是浮点数,则两个操作数都将被评估为浮点数,结果将是一个浮点数。否则,操作数将被解释为整数,并且结果也将是整数。注意,这不会改变操作数本身的类型。唯一的变化是操作数的求值方式以及表达式本身的类型。
这是因为您分配此变量的方式。这是例子:
$a = 1;
var_dump($a);
$a = "1";
var_dump($a);
Run Code Online (Sandbox Code Playgroud)
这会产生:
int(1)
string(1) "1"
Run Code Online (Sandbox Code Playgroud)