PHP 变量类型
-
PHP变量
在PHP程序中间存储信息的主要方法是使用变量。以下是PHP中最重要的变量知识。- PHP中的所有变量都以前导美元符号($)表示。
- 变量的值是其最近赋值的值。
- 变量分配用=运算符,左侧是变量,右侧是要计算的表达式。
- 变量可以但不需要在赋值之前声明。
- PHP中的变量没有内在类型 - 变量事先不知道它是否将用于存储数字或字符串。
- 分配前使用的变量具有默认值。
- PHP可以在必要时自动将类型从一个转换为另一个。
- PHP变量类似于Perl。
PHP总共有八种数据类型,我们用它来构造我们的变量- 整型 - 是整数,没有小数点,如4195。
- 浮点 - 是浮点数,如3.14159或49.1。
- 布尔值 - 只有两个可能的值,true或者false。
- NULL - 是一种特殊类型,只有一个值:NULL。
- 字符串 - 是字符序列,如"PHP支持字符串操作"。
- 数组 - 是其他值的命名和索引集合。
- 对象 - 是程序员定义的类的实例,它们可以打包特定于类的其他类型的值和函数。
- 资源 - 是包含对PHP外部资源(例如数据库连接)的引用的特殊变量,属于一种特别的对象类型。
前五个是简单类型,接下来的两个(数组和对象)是复合的,复合类型可以打包任意类型的其他任意值,而简单类型则不能。我们将在本章中仅解释简单的数据类型。数组和对象将单独解释。 -
整型
它们是整数,没有小数点,如4195,它们是最简单的类型。它们对应于简单的整数,包括正数和负数。整数可以分配给变量,也可以在表达式中使用,如下所示<?php $int_var = 12345; $another_int = -12345 + 12345; ?>
整数可以是十进制(基数10),八进制(基数8)和十六进制(基数16)格式。十进制格式是默认格式,八进制整数用前导0指定,十六进制格式有前导0x。 对于大多数常见平台,最大整数是(231-1)(或2,147,483,647),最小(最负)整数是。(-231-1)(或-2,147,483,647)。 -
浮点
他们像3.14159或49.1。默认情况下,使用所需的最小小数位数打印浮点。例如,代码
尝试一下<?php $many = 2.2888800; $many_2 = 2.2111200; $few = $many + $many_2; print("$many + $many_2 = $few <br>"); ?>
它产生以下浏览器输出2.28888 + 2.21112 = 4.5
-
布尔值
它们只有两个可能的值,真(1)或者假(0)。PHP提供常量用作布尔值:true
和false
,可以像这样使用
尝试一下<?php if (TRUE) print("这里会打印。<br>"); else print("这里永远不会打印<br>"); ?>
将其他类型解释为布尔值 - 以下是确定不属于布尔类型值的“真值”的规则- 如果该值是数字,则如果恰好等于零则为
false
,否则为true
。 - 如果该值是字符串,则如果字符串为空(具有零个字符)或字符串为“0”则为
false
,否则为true
。 - NULL类型的值始终为
false
。 - 如果值是数组,则如果它不包含其他值则为
false
,否则为true
。对于对象,包含值意味着具有已分配值的成员变量。 - 有效资源为
true
(某些在成功时返回资源的函数将在失败时返回false
)。 - 不要使用浮点作为布尔值。
当在布尔上下文中使用时,以下每个变量都在其名称中嵌入了布尔值。$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值
NULL是一种特殊类型,只有一个值:NULL
。要给变量一个NULL
值,只需像这样分配它<?php $my_var = NULL; ?>
特殊常量NULL
按惯例大写,但实际上它不区分大小写; 你也可以这样写代码:<?php $my_var = null; ?>
已赋值为NULL
的变量具有以下属性- 它在布尔上下文中计算为
FALSE
。 - 使用isset()函数测试时,它返回
FALSE
。
- 它在布尔上下文中计算为
-
字符串
它们是字符序列,例如"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 = ""; // 一个零字符的字符串 ?>
单引号字符串按字面处理,而双引号字符串里面用会用变量值替换变量以及特别解释某些字符序列。
尝试一下<?php $variable = "name"; $literally = 'My $variable will not print!'; print($literally); print "<br>"; $literally = "My $variable will print!"; print($literally); ?>
这将产生以下结果My $variable will not print! My name will print
字符串长度没有人为限制 - 在可用内存的范围内,你应该能够制作任意长的字符串。由双引号分隔的字符串(如“this”中所示)由PHP以下两种方式进行预处理- 以反斜杠(\)转义字符开头的某些字符序列将替换为特殊字符
- 变量名(以$开头)将替换为其值的字符串表示形式。
转义字符替换- \n由换行符替换
- \r\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 这使用“here document”语法输出带有变量的多行 插值。 请注意,此处的文档终止符必须出现在一行中 只是一个分号。 没有多余的空白! END; print $channel; ?>
-
变量作用域
作用域可以定义为变量对声明它的程序的可用性范围。PHP变量可以是四种作用域类型之一- 局部变量
- 函数参数
- 全局变量
- 静态变量
局部变量
函数中声明的变量被视为本地变量; 也就是说,它只能在该函数中引用。该函数之外的任何赋值都将被视为与函数中包含的变量完全不同的变量。
尝试一下<?php $x = 4; function assignx () { $x = 0; print "\$x 函数内部的 $x. <br />"; } assignx(); print "\$x 函数外部的 $x. <br />"; ?>
它产生以下浏览器输出$x 函数内部的 0. $x 函数外部的 4.
函数参数
函数参数在函数名称和括号内声明。声明它们就像一个典型的变量。
尝试一下<?php //将值乘以10并将其返回给调用者 function multiply ($value) { $value = $value * 10; return $value; } $retval = multiply (10); Print "返回值是: $retval\n"; ?>
它产生以下浏览器输出返回值是: 100
全局变量
与局部变量相比,可以在程序的任何部分访问全局变量。但是,为了进行修改,必须将全局变量显式声明为要修改它的函数中的全局变量。通过将关键字GLOBAL
放在应该被识别为全局的变量之前,可以很方便地完成此操作。将此关键字放在已存在的变量前面会告诉PHP使用具有该名称的变量。看一个例子
尝试一下<?php $somevar = 15; function addit() { GLOBAL $somevar; $somevar++; print "\$somevar 是 $somevar"; } addit(); ?>
它产生以下浏览器输出$somevar 是 16
静态变量
与声明为函数参数的变量(在函数的出口处被销毁)相比,静态变量在函数退出时不会丢失其值,并且如果再次调用该函数,它仍将保持该值。只需将关键字STATIC放在变量名前面,就可以将变量声明为静态。
尝试一下<?php function keep_track() { STATIC $count = 0; $count++; print $count; print "<br />"; } keep_track(); keep_track(); keep_track(); ?>
它产生以下浏览器输出1 2 3
-
变量命名
命名变量的规则是- 变量名称必须以字母或下划线字符开头。
- 变量名称可以包含数字,字母,下划线,但不能使用+, - ,%,( ,),&等字符。
- 变量长度没有限制(建议使用规范的命名规则,下划线分割或者驼峰法)。