【问题标题】:Get variable type from object从对象中获取变量类型
【发布时间】:2012-08-30 09:31:36
【问题描述】:

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

这是我的对象:

$问题

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


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

输出为:

1 是一个字符串

但是 1 是一个整数...

我做错了什么?

【问题讨论】:

  • 您想知道类型在技术上是整数还是标量值仅包含数字?另外,请使用var_dump()打印对象。
  • 如果它说它是一个字符串,那么它就是一个字符串。哪里来的数据让你觉得它不是字符串?

标签: php


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    谢谢!

    【讨论】:

      【解决方案3】:

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

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

      会产生:

      int(1)
      string(1) "1"
      

      【讨论】:

        【解决方案4】:

        您没有将其定义为字符串,而是这样定义:

        $question->answer = 1;
        

        你需要这样定义它:

        $question->answer = "1";
        

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-12-01
          • 1970-01-01
          • 2021-12-01
          • 1970-01-01
          • 2021-09-26
          • 2018-07-30
          • 2013-04-13
          相关资源
          最近更新 更多