1

PHP 是松散类型的语言,但有人可以告诉我,任何 PHP 变量的默认数据类型是什么?它的隐含数据类型是什么?

4

4 回答 4

8

PHP 的变量是动态的,并且会根据其中的数据而变化。所以默认情况下它们没有数据类型。

于 2012-10-30T15:35:28.900 回答
5

变量手册

没有必要在 PHP 中初始化变量,但这是一个非常好的做法。未初始化的变量具有其类型的默认值,具体取决于使用它们的上下文 - 布尔值默认为 FALSE,整数和浮点数默认为零,字符串(例如在 echo 中使用)设置为空字符串,数组变为空大批。

所以,它们就是你对它们的看法。

于 2012-10-30T15:36:34.360 回答
2

OP 知道 PHP 是一种松散类型的语言,因此任何初始化变量的类型都取决于它所保存的数据;所以这样读,问题就变成了未初始化变量的类型是什么?- 答案是null

PHP 通常不允许您在初始化变量的情况下声明变量,没有直接等价于:

Dim SomeVar

因此,查看“默认”数据类型的唯一方法是评估尚未设置的变量或不包含数据的类成员。

1:未设置的变量

echo $someVar === null ? "NULL" : "NOT NULL"; //outputs NULL (and triggers a Warning)

2:声明的类成员不包含任何数据

class Test {
  public static $someVar;
}

var_dump(Test::$someVar); // outputs NULL

所以:

  • 任何初始化变量的类型都由它保存的数据决定

  • 任何未初始化变量的类型是null

于 2012-10-30T16:18:31.470 回答
-1

类型杂耍

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

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

来源:http ://www.php.net/manual/en/language.types.type-juggling.php

于 2012-10-30T15:48:23.033 回答