5

我试图获取变量类型但我不知道为什么,总是说变量是一个字符串。

这是我的对象:

$问题

stdClass Object
        (
            [reply_id] => 8
            [q_key] => 35BBs2xy1346230680
            [answer] => 1
        )


echo $question->answer." is a ".gettype($question->answer);

输出是:

1 是一个字符串

但是1是一个整数...

我究竟做错了什么 ?

4

4 回答 4

5

如果该值是从 a 传递的$_GET$_POST则它会自动被视为字符串。如果它是从mysql 查询返回的,它将作为字符串返回

充其量,您可以使用settype将其设置为整数。话虽如此,PHP 在类型及其值方面非常自由。

设置类型示例:

<?php
$foo = "5bar"; // string
$bar = true;   // boolean

settype($foo, "integer"); // $foo is now 5   (integer)
settype($bar, "string");  // $bar is now "1" (string)
?>

类型注释:

PHP 不需要(或支持)在变量声明中显式定义类型;变量的类型由使用变量的上下文决定。也就是说,如果给变量$var赋值一个字符串值,那么$var就变成了一个字符串。如果将一个整数值分配给 $var,它就会变成一个整数。

PHP 自动类型转换的一个示例是加法运算符“+”。如果任一操作数是浮点数,则这两个操作数都被计算为浮点数,结果将是浮点数。否则,操作数将被解释为整数,结果也将是整数。请注意,这不会改变操作数本身的类型;唯一的变化是如何计算操作数以及表达式本身的类型。

于 2012-09-05T16:02:23.173 回答
1

我使用 EZsql 来获取对象...我没有定义变量。我认为 is_numeric() 函数可以完成这项工作:)

谢谢!

于 2012-09-05T16:15:15.223 回答
0

这是因为您分配此变量的方式。这是示例:

$a = 1;
var_dump($a);
$a = "1";
var_dump($a);

这将产生:

int(1)
string(1) "1"
于 2012-09-05T15:53:58.437 回答
0

您没有将其定义为字符串,而是以这种方式定义:

$question->answer = 1;

您需要这样定义它:

$question->answer = "1";

PHP 也适用于隐式变量,因此它可以自动将数字答案声明为整数。为了解决这个问题,如果$var = "1",以这种方式定义它:

$question->answer = strval($var);
于 2012-09-05T15:55:07.147 回答