2012-09-05 44 views
3

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

这是我的目标:

$问题

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


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

输出是:

1是一个字符串

但1是一个整数...

我在做什么错?

+1

你想知道这个类型在技术上是一个整数还是标量值只包含数字?另外,请使用'var_dump()'打印对象。 –

+2

如果它说它是一个字符串,那么它是一个字符串。数据来自哪里,你认为它不是一个字符串? – deceze

回答

0

这是因为你分配这个变量的方式。这里的例子:

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

这将产生:

int(1) 
string(1) "1" 
0

你没有把它定义为一个字符串,而不是把它定义是这样的:

$question->answer = 1; 

您需要定义它因此:

$question->answer = "1"; 

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

$question->answer = strval($var); 
3

如果该值是从$_GET$_POST然后将其作为一个字符串自动处理通过。如果它是从mysql query it is being returned as a string返回的。您可以使用settype将其设置为一个整数。话虽如此,PHP相当于liberal when it comes to types及其值。的setType的

实施例:

<?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的自动类型转换的一个例子是加法运算符'+'。如果任一操作数是一个浮点数,那么这两个操作数都被评估为浮点数,结果将是一个浮点数。否则,操作数将被解释为整数,结果也将是一个整数。请注意,这不会改变操作数本身的类型;唯一的变化就是如何评估操作数以及表达式本身的类型。

1

即时通讯使用EZsql获取对象...我没有定义变量。我认为is_numeric()函数将完成这项工作:)

谢谢!