变量类型
信息存储的主要方式是通过在一个 PHP 程序中使用一个变量。这里了解 PHP 变量是最重要的事情。
- 所有变量在 PHP 标有一个美元符号($)。
- 一个变量的值取决于最近赋给的值。
- 变量赋值使用‘=’操作符、变量左边和右边的表达式计算。
- 变量可以不需要被提前定义,使用时定义即可。
- PHP 变量没有内在类型——一个变量事先不知道是否会用于存储数字或字符串。
- 变量使用之前,需要分配有默认值。
- PHP 可以自动地从一个类型转换成另一个类型。
- PHP 变量和 perl 语言变量很相似。
PHP 一共有八种数据类型可以供我们用来构造变量:
- 整型: 是整数,没有小数点,像 4195。
- 浮点型: 浮点数,如 3.14159 或 49.1。
- 布尔值: 只有两个可能值或真或假。
- 空: 是一种特殊的类型只有一个值:空。
- 字符串类型: 字符序列,像’PHP 支持字符串操作’
- 数组: 有命名和索引所有值的集合。
- 对象: 是程序员定义类的实例化,可以打包其他类型的值和属于这个类的函数。
- 资源: 特殊变量持有引用外部资源到 PHP(如数据库连接)。
前五个是简单类型,接下来的两个(数组和对象)是复合类型,这种复合类型可以打包其他任意类型的值,而不能是简单类型。我们将解释这章数据类型。数组和对象将分别解释。
整数
他们是整数,没有小数点,像 4195。他们是最简单的类型。它们对应于简单的整数,正的和负的。整数可以分配给变量,或者他们可以用于表达式,像这样:
$int_var = 12345;
$another_int = -12345 + 12345;
整形可以是十进制整数(base 10),八进制(base 8),十六进制(base 16)格式。默认的是十进制格式,八进制整数指定 0 开头,十六进制以 0x 开头。
为最常见的平台,最大的整数 (2 31.1)(2147483647),最小的(负)整数是(2 31.1)(或.-2,147,483,647)。
浮点型
他们就像 3.14159 或 49.1。默认情况下浮点型打印所需的最小数量的小数。例如,以下代码:
$many = 2.2888800;
$many_2 = 2.2111200;
$few = $many + $many_2;
print(.$many + $many_2 = $few.);
它将会在浏览器中输出以下结果:
2.28888 + 2.21112 = 4.5
布尔值
他们只有两个可能值或真或假。PHP 提供了几个常量专门作为布尔值:TRUE 和 FALSE,可以这样使用:
if (TRUE)
print("This will always print");
else
print("This will never print");
解释其他类型为布尔值
这里的规则确定没有任何值的“truth”的布尔类型:
- 如果该值是一个数字,如果完全等于零那么它为假,否则为真。
- 如果该值是一个字符串,如果字符串是空的(为零个字符)或字符串“0” 那么它为假,否则为真。
- 空类型的值 NULL 总为假。
- 如果该值是一个数组,如果它不包含其他值那么它是假的,否则为真。做为一个对象,包含一个值意味着一个成员变量被分配给一个值。
- 有效资源为真时(尽管一些函数,成功返回资源时返回真不成功时将返回假)。
- 不要使用双精度值作为布尔值。
下面的每一个变量的真实值嵌入到它的名字时在下面的布尔上下文环境中运行。
$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 = "";
空
空是一种特殊类型,只有一个值:空。给一个变量 NULL 值,只是这样分配:
$my_var = NULL;
特殊的常量 NULL 类型按照惯例应该大小化,就是大小写敏感;但是你也可以使用以下方式来定义:
$my_var = null;
一个变量被赋值为空,有以下属性:
- 它在布尔上下文的求值结果为 FALSE。
- 测试使用 IsSet() 函数时返回 FALSE。
字符串
他们是字符序列,像“PHP supports string operations”。以下是有效的字符串的例子
$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 将对一些特殊的字符解析成为特定的字符序列。
它将会输出以下结果:
My $variable will not print!n
My name will print
没有在可用内存的范围内限制字符串长度,你可以定义任意长度的字符串。
如果字符串是包围在双引号(像”this”)中,PHP 将通过二种方式对字符进行预先处理:
某些字符序列以反斜杠()开始替换特殊字符。
变量名(从 $ 开始)替换为字符串表示的值。
转义序列替换:
- 换取新的一行由
\n
所代替 - 回车键由
\n
所代替 - 制表符由
\t
所代替 - $ 符号由
\$
所代替 - 双引号(“)由
\”
所代替 - 单一的反斜杠由
\\
所代替
文档:
使用以下文档您可以将多个行分配给一个字符串变量:
<?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!
<br />
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>
变量范围
声明它的程序时范围可以定义为可用性变量的范围。PHP 变量可以是四种类型中的一个:
- 局部变量
- 函数参数
- 全局变量
- 静态变量
变量的命名规则
变量的命名规则是:
- 变量名必须以字母或下划线 “_” 开头。
- 变量名只能包含字母数字字符以及下划线。 但你不能使用字符
+
、-
、%
、(
、).&
等。
变量没有大小限制。
PHP 局部变量
声明它的程序时范围可以定义为可用性变量的范围。PHP 变量可以是四种类型中的一个:
- 局部变量
- 函数参数
- 全局变量
- 静态变量
局部变量
一个变量在函数中声明时被认为是局部的;也就是说,它可以在函数内部被引用。函数以外的任何赋值将被认为是一个完全不同的变量:
<?
$x = 4;
function assignx () {
$x = 0;
print "\$x inside function is $x.
";
}
assignx();
print "\$x outside of function is $x.
";
?>
这将会产生以下结果:
$x inside function is 0.
$x outside of function is 4.
PHP 函数参数
声明它的程序时范围可以定义为可用性变量的范围。
PHP 变量可以是四种类型中的一个:
- 局部变量
- 函数参数
- 全局变量
- 静态变量
注意:PHP 函数将在 PHP 函数章节详细介绍。
但是简短的函数是一个小单位的程序,它可以采取输入参数的形式之后做一些处理,可能返回一个值。
函数参数
函数参数声明在函数名之后括号内。他们就像一个典型的变量声明:
<?
// multiply a value by 10 and return it to the caller
function multiply ($value) {
$value = $value * 10;
return $value;
}
$retval = multiply (10);
Print "Return value is $retval\n";
?>
这将会输出以下结果:
Return value is 100
PHP 全局变量
声明它的程序时范围可以定义为可用性变量的范围。PHP 变量可以是四种类型中的一个:
- 局部变量
- 函数参数
- 全局变量
- 静态变量
全局变量
相比局部变量,全局变量可以在任何程序的任何一部分被访问。尽管如此,为了被修改,必须在函数内声明一个变量为全局变量它是可以被修改的。通过将关键字 GLOBAL 放在变量前该变量可以被确认为全局变量。将该关键字放在一个已经存在的变量前告诉 PHP 使用有这个名字的变量。
考虑下面一个例子:
<?
$somevar = 15;
function addit() {
GLOBAL $somevar;
$somevar++;
print "Somevar is $somevar";
}
addit();
?>
这将会输出以下结果:
Somevar is 16
PHP 静态变量
声明它的程序时范围可以定义为可用性变量的范围。PHP 变量可以是四种类型中的一个:
- 局部变量
- 函数参数
- 全局变量
- 静态变量
静态变量
最后我们讨论的变量范围类型被认为是静态的。和函数参数相比,声明的变量作为一个静态变量,当函数退出时变量将不会失去其原来的值,仍然会认为值已经被函数调用了。你可以声明一个变量为静态只需将关键字 static 放在变量名前面。
<?
function keep_track() {
STATIC $count = 0;
$count++;
print $count;
print "
";
}
keep_track();
keep_track();
keep_track();
?>
这将会输出以下结果:
1
2
3
变量和变量类型C语言时有详细介绍。可以先看C语言教程关于变量部分,讲的非常详细