Php 简明教程
PHP – Data Types
“数据类型”一词是指将数据分类到不同类别中。PHP 共有八种数据类型,我们使用这些数据类型构造变量−
-
Integers − 无小数点的整数,例如 4195。
-
Doubles − 浮点数,例如 3.14159 或 49.1。
-
Booleans - 只有两种可能的值,即真或假。
-
NULL - 仅有一个值 NULL 的特殊类型。
-
Strings - 字符序列,例如“PHP 支持字符串操作”。
-
Arrays - 其他值的命名和索引集合。
-
Objects - 程序员定义的类的实例,既可以封装其他类型的值,也可以封装特定于该类的函数。
-
Resources - 保存对 PHP 外部资源(例如数据库连接)的引用的特殊变量。
前五个是简单类型,后两个(数组和对象)是复合类型。复合类型可以打包任意类型的其他任意值,而简单类型则不能。
在本章中,让我们详细讨论 PHP 的这些内置数据类型。
Integer Data Type in PHP
没有小数点(例如 4195)的整数在 PHP 中为 int 类型。整型数据类型是最简单的类型。它们对应于简单的整数,包括正数和负数。
-
int 是集合 Z = {…, -2, -1, 0, 1, 2, …} 中的数字。
-
int 可以用十进制(基数 10)、十六进制(基数 16)、八进制(基数 8)或二进制(基数 2)记法表示。
要使用八进制记法,数字应加上前缀“0o”或“0O”。要使用十六进制记法,数字应加上前缀“0x”。要使用二进制记法,数字应加上前缀“0b”。
下面给出一些 examples -
-
Decimal Integer - 201、4195、-15
-
Octal Integer - 0010、0O12、-0O21
-
Hexadecimal Integer - 0x10、-0x100
-
Binary Integer - 0b10101、-0b100
可以将整数分配给变量,也可以在表达式中使用它们,如下所示 -
$int_var = 12345;
$another_int = -12345 + 12345;
Double Data Type in PHP
双变量表示浮点数(也称为“浮点数”、“双精度数”或“实数”),即带分数部分的数字。分数部分跟在整数部分后面,中间用小数符号 (.) 分隔。
Note − 双精度变量可以为正、负或零。
$var1 = 1.55
$var2 =-123.0
Scientific Float Notation
PHP还允许使用科学计数法表示小数点后具有更多位数的浮点数。符号“E”或“e”用于分隔整数部分和小数部分。
− 1.2e3, 2.33e-4, 7E-10, 1.0E5
默认情况下,双精度打印时使用所需的小数位数。查看以下 example −
<?php
$many = 2.2888800;
$many_2 = 2.2111200;
$few = $many + $many_2;
print("$many + $many_2 = $few");
?>
它生成下列内容 output −
2.28888 + 2.21112 = 4.5
Boolean Data Type in PHP
bool 类型只有两个值;它可以为真或假。 bool 类型用于表示真值。
$bool1 = true;
$bool2 = false;
你也可以使用整数值“1”和“0”来表示真和假布尔值 −
$bool3 = 1;
$bool4 = 0;
通常,返回布尔值的运算符的结果将传递给诸如 if, while 或 do-while 之类的控制结构。例如,
if (TRUE)
print("This will always print.");
else
print("This will never print.");
Interpreting Other Data Types as Booleans
这里有一组规则,你可以使用它来将其他数据类型解释为布尔值 −
-
如果该值是一个数字,则只有当该值等于零时它才为假,否则该值为真。
-
如果该值是一个字符串,则当该字符串为空(没有字符)或该字符串为“0”时它为假,否则为真。
-
NULL类型的变量总为假。
-
如果该值是一个数组,则当它不包含其他值时它为假;否则为真。对于一个对象,包含一个值意味着有一个已经赋值的成员变量。
-
有效的资源为真(虽然一些在成功时返回资源的函数在不成功时将返回FALSE)。
Note − 不要将双精度用于布尔值。
当在布尔上下文中使用这些变量中的每一个时,这些变量中每一个都有其名称中嵌入的真值。
$true_num = 3 + 0.14159;
$true_str = "Tried and true"
$true_array[49] = "An array element";
$false_array = array();
$false_null = NULL;
$false_num = 999 - 999;
$false_str = "";
String Data Type in PHP
字符串是一系列字符,例如’PHP支持字符串操作'。
在PHP中,一个字符和一个字节相同。它意味着PHP仅支持256个字符集,因此不提供本机Unicode支持。
PHP支持单引号和双引号字符串的构建。以下两种表示在PHP中均有效 −
$string_1 = "This is a string in double quotes";
$string_2 = 'This is a somewhat longer, singly quoted string';
以下是字符串类型的其他一些示例 −
$string_39 = "This string has thirty-nine characters";
$string_0 = ""; // a string with zero characters
单引号字符串几乎按原样对待,而双引号字符串用其值替换变量,并特别解释某些字符序列。
<?php
$variable = "name";
$literally = 'My $variable will not print!';
print($literally);
print "\n";
$literally = "My $variable will print!";
print($literally);
?>
当您运行此代码时,它将生成以下 output −
My $variable will not print!
My name will print
字符串长度没有限制。在可用内存范围内,您可以创建任意长的字符串。
由双引号分隔的字符串(如“this”)将在 PHP 中通过以下两种方式进行预处理:
-
以反斜杠 (\) 开头的某些字符序列将替换为特殊字符。
-
变量名(以 $ 开头)将替换为其值的字符串表示形式。
转义序列替换如下:
-
\n 被换行符替换
-
\r 被回车符替换
-
\t 被制表符替换
-
\$ 被美元符号本身 ($) 替换
-
\" 被单个双引号 (") 替换
-
\\ 被单个反斜杠 (\) 替换
PHP 也有字符串数据类型的 Heredoc 和 Nowdoc 表示法。
Heredoc Representation of String Data Type
您可以使用 heredoc 将多行分配给单个字符串变量:
<?php
$channel =<<<_XML_
<channel>
<title>What's For Dinner</title>
<link>http://menu.example.com/ </link>
<description>Choose what to eat tonight.</description>
</channel>
_XML_;
echo <<< END
This uses the "here document" syntax to output multiple lines with
variable interpolation. Note that the here document terminator must
appear on a line with just a semicolon. no extra whitespace!
END;
print $channel;
?>
当你运行这段代码时,它将产生以下输出:
This uses the "here document" syntax to output
multiple lines with variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
<channel>
<title>What's For Dinner</title>
<link>http://menu.example.com/ </link>
<description>Choose what to eat tonight.</description>
</channel>
Nowdoc Representation of String Data Type
heredoc 标识符的所有规则也适用于 nowdoc 标识符。 nowdoc 的指定方式与 heredoc 相同,但 nowdoc 中不进行解析。您可以使用 nowdoc 构造来嵌入大块文本,而无需使用任何转义字符。
nowdoc 使用与 heredoc 相同的 <<< 序列进行标识,但标识符用单引号括起来,例如 <<<'EOT'。Nowdoc 用于单引号字符串,就像 heredoc 用于双引号字符串一样。
请看以下示例:
<?php
echo <<<'IDENTIFIER'
As the cat cleared its throat with a refined "Meow",
the squirrel chirped excitedly about its latest
discovery of a hidden stash of peanut treasure!
IDENTIFIER;
?>
运行代码并检查其输出:
As the cat cleared its throat with a refined "Meow",
the squirrel chirped excitedly about its latest
discovery of a hidden stash of peanut treasure!
Null Data Type in PHP
在 PHP 中,null 表示一个特殊类型,它只有一个值:NULL。未定义和 unset() 变量将变为值“null”。
程序员通常在 PHP 中使用 Null 数据类型来初始化变量或指示某个值缺失。
若要给变量赋值为 NULL,只需像这样赋值:
$my_var = NULL;
根据惯例,特殊常量 NULL 为大写,但实际上它就是 case insensitive; 你也可以直接输入 −
$my_var = null;
已分配了 NULL 的变量具有以下属性 −
-
在布尔语境中,它被评估为 FALSE。
-
使用 IsSet() 函数测试时,它会返回 FALSE。
Note − PHP 中变量的数据类型在运行时根据赋值给它们的 值来确定。
Array Data Type in PHP
PHP 中的一个数组是一个有序映射,一个键与一个或多个值相关联。PHP 数组使用 array() 函数定义,或使用将数据放入方括号中的简短表示法进行定义。
请看以下 associative arrays 示例 −
Object Data Type in PHP
对象类型是一个由程序员定义的类的实例,它可以将其他类型的值和特定于该类的函数打包在一起。
要创建一个新对象,请使用 new statement 实例化一个类 −
class foo {
function bar() {
echo "Hello World.";
}
}
$obj = new foo;
$obj->bar();