变量即值不断变化的数据。
常量即值恒定不变的数据。
#变量的类型转换
在PHP中,变量的类型是可以任意转换的,变量定义时不需要明确的类型定义,变量的类型是根据上下文来决定的,当 $sivir 被赋以字符串值, $sivir 就成了字符串类型的变量。当 $sivir 被赋以一个整型值,它就又成了一个整数型变量。
###类型转换有自动转换和强制转换:
####自动转换
一个变量被赋以字符串值,它就是字符串型变量,当它被再次赋以整型值,它就是整型变量。
以合法数字开始的字符串会把那个数字作为值先转换,否则值为0,含有. e E的转换成浮点型,反之为整型。
代码:
<?php
$foo = "0";
var_dump($foo);
$foo += 2;
var_dump($foo);
$foo = $foo + 1.3;
var_dump($foo);
$foo = 5 + "10 dollars";
var_dump($foo);
?>
效果:
string '0' (length=1)
int 2
float 3.3
int 15
####强制转换
语法:变量 = (目标类型) 变量;
把一个变量转换类型后赋给另一个变量。
代码:
<?php
$foo = 10;
var_dump($foo);
$bar = (boolean) $foo;
var_dump($bar);
?>
效果:
int 10
boolean true
#变量的命名
PHP中的变量用一个美元符号$后跟变量名来表示,变量名区分大小写。
#可变变量
可变变量指一个变量的变量名可以动态地设置和使用。
一个可变变量获取了一个普通变量的值作为这个可变变量的变量名,这个变量就叫做可变变量。
在PHP的函数和类的方法中,超全局变量不可以用作可变变量。
代码:
<?php
$a = 'hello'; //定义变量`a`并赋值为“hello”
$$a = 'world'; //定义变量`$$a`并赋值为“world”
var_dump($$a);
echo "$$a";
?>
效果:
$hello
#预定义变量
指PHP预先定义好的变量,不需要赋值就能直接使用。
-
$_SEVER:服务器变量,包含头信息(header)、路径(path)和脚本位置等组成的数组。
-
$_ENV:环境变量,包含操作系统类型、软件版本等信息组成的数组。
-
$_COOKIE:HTTP Cookies变量,通过HTTP Cookies传递的变量组成的数组。
-
$_GET:HTTP GET变量,通过HTTP GET方法传递的变量组成的数组。
-
$_POST:HTTP POST变量,通过HTTP POST方法传递的已上传文件项目组成的数组。
-
$_FILES:HTTP文件上传变量,通过HTTP POST方法传递的已上传文件项目组成的数组。
-
$_REQUEST:Request变量,次关联数组包含 $_GET、$_POST和$_COOKIE中的全部内容。
-
$_SESSION:Session变量,包含当前脚本中session变量的数组。
-
$_GLOBALS:全局变量,由所有已定义的全局变量组成的数组。
#外部变量
-
表单提交的数据
-
HTTP Cookies
在HTML表单中传来的值被服务器自动转换为PHP预定义变量$_POST
的数组元素。要访问这些元素,把表单中的字段名作为$_POST数组的索引就可以了,即$_POST['name']
。
#引用
引用类似于建立桌面快捷方式,在变量前面加上&
即可。
如:$c = &$a;
当变量a的值改变时,通过变量c引用的得到的值夜改变。
另一种相反的例子:
$b = $a;
类似于上面这种直接把一个变量的值赋给另一个变量,$b就是$a的拷贝,当后来$a的值改变时,$b的值不会改变。
引用可以节约内存资源。
#变量的销毁
在PHP中,变量通常不需要自动销毁,系统会自动释放。但对于性能要求比较高的系统来说,自动释放太慢,达不到高性能的要求,这样就要求编写代码时要及时销毁一些变量,通常是一些包含大量数据的变量。
销毁变量有两种方法:
-
重新赋值(赋
NULL
值) -
使用
unset()
函数
#常量
常量在程序运行期间不改变它的值,并且常量是全局的,定义了一个常量之后,不用管作用域就可以在脚本的任何地方访问常量。
使用 define()
函数定义。
格式:
<?php
define("Constant","hello");
var_dump(Constant);
?>
效果:
string 'hello' (length=5)
一个常量一旦被定义,就不能再改变或取消定义。
常量与其他PHP标签符号遵循同样的命名规则,常量没有美元符号。按惯例来说常量名全部使用大写字母。
常量类型包括布尔型、整型、浮点型和字符串。
不能定义资源类型的常量。
####常量与变量的区别
-
常量前面没有美元符号$
-
常量的定义只能通过 define()函数
-
常量可以忽略变量范围的规则而在任何地方定义和访问
-
常量一旦被定义就不能被重新定义或取消定义
-
常量的值只能是标量
#魔术常量
除了上面说的预定义变量之外,PHP中还有比预定义变量更多的预定义常量。而这类预定义常量很多都是由不同的扩展库定义的,只有在加载了扩展库之后才会出现,或者在动态加载后,或者在编译时已经包括进去了。
5个魔术常量
__LINE__
文件中的当前行号。__FILE__
文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自php4.0.2起,__FILE__总是包含一个绝对路径,而在此之前的版本有时会包含一个相对路径。__FUNCTION__
函数名称,返回该函数被定义时的名字(php4.3.0新加)。自php5起本常量返回该函数被定义时的名字(区分大小写)。在php4中该值总是小写字母的。__CLASS__
类的名称,返回该类被定义时的名字(php4.3.0新加)。自php5起本常量返回该类被定义时的名字(区分大小写)。在php4中该值总是小写字母的。__METHOD__
类的方法名,返回该方法被定义时的名字(php5.0.0新加)。返回该方法被定义时的名字(区分大小写)。
来源:oschina
链接:https://my.oschina.net/u/2554512/blog/548276