PHP Manual
/
变量

PHP中的数据类型

23. 08. 2019

Obsah článku

在PHP中处理的所有数据都有一定的类型。例如,一个整数、一个字符串或一个布尔值(真/假)。

基本数据类型

基本类型也被称为**原始数据类型,或标量类型

类型 名称 描述
integer 整数 (integer) 只包含整数。最大值由比特的数量决定。在32位的PHP中,范围是从-2,147,483,648-2,147,483,647(~±20亿),64位PHP的范围是从-9,223,372,036,854,775,808-9,223,372,036,854,775,807(~±9万亿)。最大值总是可以通过调用常数PHP_INT_MAX来获得。如果超过了一个整数的最大值,PHP将把这个数字表示为float,并自动覆盖它。
float 浮点小数 这是一个浮点数的变体,*"越小越准确 "*的规则适用。数字在内部被存储为所谓的尾数指数,所以你实际上是在存储两个数字,在这两个数字之间进行尾数*(2^指数)的运算,这使得存储真正巨大的数字范围成为可能。这采用的原则是,对于大数,我们并不总是需要知道它们的准确值,但我们希望尽可能地节省内存。`float'类型的数字不需要精确存储,不应该用来计算货币。
string String 包含一串由引号或撇号分隔的字符。最大长度只受操作存储器容量的限制。一个字符串可以用任何编码存储,包含表情符号或二进制数据。
bool Boolean (boolean) 布尔代数的布尔值,只能包含truefalse
空值|空值|空值|在我们想表达某物不存在的情况下,空值 "null "是有用的。例如,一篇文章没有类别。有时 "null "被错误地替换为空("0")或空字符串("''),但这并不是表达不存在的好办法。

警告: null类型不是标量。

零(0)对空

许多开发人员在开始开发时很难理解0(零)和null(不存在的值)之间的区别。

这种区别可以用下面的图片来很好地解释,而且很幽默。

0 vs. null

手动重新包装

有些类型可以在彼此之间转换。目标数据类型是用圆括号指定的,可以在应用程序的任何地方指定,例如,在列出一个值时。

比如说。

$pi = 3.14;
echo $pi; //打印出3.14
echo (int) $pi; //打印出3

动态加注

考虑以下2个变量。

$x = 10;
$y = '10';

变量$x$y的内容有什么不同?

变量$x是一个数字,$y是一个字符串(包含一个 "1 "和一个 "0"),所以如果我们只是将变量存储在内存中,不进行任何操作,会影响数值。例如,以下2个条目将返回相同的结果。

echo $x + 5; //打印出15
echo $y + 5; //打印出15

在第二种情况下,发生了所谓的动态覆盖,也就是说,变量转换了它的数据类型,这样就可以对它进行计算操作。这种行为不能总是被依赖,更多的是一种纠正行为,以修复写得不好的初级脚本。如果可能的话,总是用数据类型来存储数字,因为这样可以提高数字的精度,使它们在将来更容易使用。

**注意:**需要注意的是,我们不能完全任意地转换数据类型,所以这并不总是可能的。如果你把一个数据类型覆盖到其他(不兼容)的数据类型,要么转换可能根本没有发生,要么原来的内容可能被破坏或完全被破坏,并被另一个类型所取代。例如,如果你把一个字符串改写成一个整数(并且一些不是数字的文本被存储在变量中),那么值1将被存储在变量中,而不是数字值。

比较类型

在比较数值时,你需要考虑不同的数据类型。

一般来说,==运算符用于两个值的一般比较(不考虑类型),而===同时比较值和数据类型。

比如说。

$a = '';
$b = null;
if ($a == $b) {
// 它将被评估为TRUE,因为
// 数据类型被转换。
}
if ($a === $b) {
// 执行更严格的验证
// 而它不会通过,因为它是一个不同的
//内容和不同的数据类型,因此
// 这段代码将永远不会运行。
}

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
5.
Status:
All systems normal.
2024