您的位置:首页 > 编程语言 > PHP开发

php(2)——常量、变量和数据类型

2015-03-23 18:21 375 查看
一、变量

PHP 中的变量用一个美元符号"$"后面跟变量名来表示。变量名是区分大小写的。 一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。正则表达式为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。 即字母 a-z,A-Z,数字0-9以及 ASCII 字符从 127 到 255(0x7f-0xff)。

如:$str='Hello';

关于变量作用域需要注意的一点:

变量的范围即它定义的上下文背景,大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内(这一点与c语言有区别)。

如:

<?php

$str = 'DSC';

function fun(){

echo $str;

}

fun();

?>

将不会有输出。如果需要在上述函数中使用$str变量,可以通过下面的方式:

<?php

$str = 'DSC';

function fun(){

global $str;

//echo $GLOBALS['str'];

echo $str;

}

fun();

?>

静态变量:用static修饰的变量,静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。

可变变量:一个变量的变量名可以动态的设置和使用。使用可变变量需要注意下面的问题:

<?php

$str = 'DSC';

$var = 'arr';

$arr = array('str',2,3,4,5);

echo $$arr[0];

?>

上述程序将产生问题,问题在于"$$arr[0]",因为此时有两种解析方式${$arr[0]}和${$arr}[0],因此必须指定。

二、变量类型

1、Boolean 布尔类型

要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都不区分大小写。

2、Integer 整型

整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号,要使用八进制表达,数字前必须加上 0(零)。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b。 注意:如果向八进制数传递了一个非法数字(8或9),则后面其余数字会被忽略。

3、Float 浮点型

浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,不要相信浮点数结果精确到了最后一位,比较两个浮点数是否相等是无意义的。

4、String 字符串型

String最大可以达到 2GB。 字符串的4 种方式表达:

单引号方式:在单引号字符串中的变量和特殊字符将不会被解析。

双引号方式:用双引号定义的字符串变量和特殊字符会被解析。

Heredoc 结构:

$str= <<<EOT

...

EOT;//结束符必须顶格,其中变量或特殊字符将会被解析。

Nowdoc结构:与Heredoc相似,只是不进行特殊字符和变量的解析。

5、数组类型

6、对象Object类型

7、资源类型

资源 resource 是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。

三、类型转换的判别

PHP 在变量定义中不支持明确的类型定义;变量类型是根据使用该变量的上下文所决定的。

1、当转换为 boolean 时,以下值被认为是 FALSE:

布尔值 FALSE 本身

整型值 0(零)

浮点型值 0.0(零)

空字符串,以及字符串 "0"

不包括任何元素的数组

不包括任何成员变量的对象(仅 PHP 4.0 适用)

特殊类型 NULL(包括尚未赋值的变量)

从空标记生成的 SimpleXML 对象

所有其它值都被认为是 TRUE(包括任何资源)。

2、转换为整型

FALSE 将产生出 0,TRUE 将产生出 1。

当从浮点数转换成整数时,将向下取整。

3、转换成字符串

一个布尔值 boolean的 TRUE 被转换成 string 的 "1"。Boolean 的 FALSE 被转换成 ""(空字符串)。

一个整数 integer 或浮点数 float 被转换为数字的字面样式的 string(包括 float中的指数部分)。使用指数计数法的浮点数(4.1E+6)也可转换。

数组 array 总是转换成字符串 "Array"。

在 PHP 4 中对象 object 总是被转换成字符串 "Object",自 PHP 5 起,适当时可以用 __toString 方法。

资源 resource 总会被转变成 "Resource id #1" 这种结构的字符串,其中的 1 是 PHP 在运行时分配给该 resource 的唯一值。

NULL 总是被转变成空字符串。

4、字符串转换为数值

如果该字符串没有包含 '.','e' 或 'E' 并且其数字值在整型的范围之内,该字符串将被当成 integer 来取值。其它所有情况下都被作为 float 来取值。

字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。

5、转换为数组

对于任意 integer,float,string,boolean 和 resource 类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。

如果一个 object 类型转换为 array,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:整数属性不可访问;

私有变量前会加上类名作前缀;保护变量前会加上一个 '*' 做前缀。这些前缀的前后都各有一个 NULL 字符。

将 NULL 转换为 array 会得到一个空的数组。

6、 转换为对象

将一个对象转换成对象,它将不会有任何变化。

其它任何类型的值被转换成对象,将会创建一个内置类 stdClass 的实例。如果该值为 NULL,则新的实例为空。

数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值,名为 scalar 的成员变量将包含该值。

7、转换到 NULL

使用 (unset) $var 将一个变量转换为 null 将不会删除该变量或 unset 其值。仅是返回 NULL 值而已。

四、常量

常量是在程序执行期间无法改变的数据,其作用域是全局的,其命名方式与变量一样只是不需要$,通常用大写字母表示。

常量的定义方式:

1、define(常量名,常量值);

2、const 常量名=常量值;

魔术常量:它们的值随着它们在代码中的位置改变而改变。

__LINE__ 文件中的当前行号。

__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

__Dir__文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

__FUNCTION__ 函数名称 。

__CLASS__ 类的名称 。

__TRAIT__ Trait 的名字 。

__METHOD__ 类的方法名 。

__NAMESPACE__ 当前命名空间的名称 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php