PHP 语言标记
因为 PHP 是兼容当时的主流语言,所以 PHP 有四种标记方式:
- <?php PHP 代码 ?>。这是 PHP 最为正宗的语言标记,称为标准风格标记、XML 风格标记等,推荐使用
- <? PHP代码 ?>。这是 PHP 语言标记的简便写法,称为短风格标记,不建议使用,因为能在 Apache 中禁用这种标签
- <% PHP代码 %>。这是为了兼容习惯了 ASP 和 JSP 的程序员,称为 ASP 风格标记,不建议使用,能在 Apache 中禁用,并且和 ASP、JSP 区分度不高
- 。这是为了兼容习惯了 JavaScript 的用户,称为长风格标记,不建议使用,冗长并且失去了 PHP 可以随意放置在任意地方的特性,只能嵌入 HTML 中,而不能在标签中使用
注释
PHP 的注释也是参照主流的开发语言设置的,也含有兼容其他语言的部分,其注释类型主要有以下四种:
- //(单行注释)。注释掉 "//" 后面的所有内容(包括其他注释符)
- /* 注释内容 */(多行注释)。注释掉符号内包裹的所有内容,不能嵌套,也不能和文档注释混用
- /** 注释内容 */(文档注释)。作用和多行注释一样,但可以被提取出来形成帮助这一类东西
- # 注释内容(脚本注释)。作用和单行注释一样,目的是兼容有这种习惯的开发者
PHP 编程规范
两个空行
一个空行
- 两个函数声明之间
- 函数内的局部变量和函数的第一条语句之间
- 块注释或单行注释之前
- 一个函数内的两个逻辑代码段之间
空格
- 空格一般应用与关键字与括号之间,但是函数名称与左括号之间不加空格
- 一般在参数列表中的逗号后面加上空格
- 数学算式的操作数和运算符之间应添加空格(二进制运算与一元运算符除外)
- for 语句中的表达式应该用分号分开,后面添加空格
- 强制类型转换语句中的强制类型的右括号与表达式之间应该添加空格
变量
PHP 与 JavaScript 一样,是一种弱类型的编程语言,也就是说,不必在定义 PHP 变量时就声明其类型。
- 使用规则:使用时必须在变量名前面加上 "$" 符号,否则不会当做变量处理
- 声明规则:声明变量时也需要加 "$",声明时必须赋值,系统会根据值来设置变量类型
可变变量
PHP 可以将某个变量的值做为变量名,如:$a = ‘b‘;,$$a 就是代表 $b,如果修改 $a 的值,$$a 需要重新定义,但是 $b 仍然可以使用
变量的引用
PHP 的变量引用是将两个变量关联起来,并不是两个变量对应同一块内存空间,删除其中一个变量不会对另一个变量产生任何影响,只是少了关联关系而已
命名规则
- 可以使用系统关键字为变量命名,因为 PHP 的变量都带有 "$",可以区分关键字与变量
- 不能以数字开头
- 不能含有 PHP 的运算符,如:"+"、"-"、"*"、"/"等
- PHP 只有变量和常量区分大小写,其余不区分
数据类型
PHP 提供了 8 种基本的数据类型,分为:标量类型(1-4)、复合类型(5-6)、特殊类型等(7-8)
- 整型:int、integer、long
- 布尔型:bool、boolean(与 bool 相同,兼容程序员习惯)
- 浮点型:float、double、real(real 似乎可以和 double 等价,PHP 并没有规定它们的精度区别)
- 字符串:string
- 数组:Array
- 对象:Object
- 资源类型:resource
- 空类型:NULL(变量为空即代表变量不存在)
数据类型补充说明
与布尔 false 相等的值
- false("false"为 true)
- 0
- 0.0
- " "或者"0"
- 没有成员变量的数组(array())
- 没有单元的对象(仅适用于 PHP4)
- 特殊类型 NULL(包括尚未设定的变量)
整型的数据溢出
整型数值最大范围为 ±2147483647,如果用超出范围的数赋值给整型变量,整型变量会提升为 float,如果强制使用 int 存储,则溢出的部分重新加在最小值处,直至最后的值在整型数据区间内为止,此时的值为该数的 int 型数据
浮点类型的精度
浮点型最大精度为小数点后15位,永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等
字符串中的变量解析
假设有一个变量 $beer,我们需要输出 "$beers",此时不是解析成变量 $beer,而是解析成 $beers,要解析成 $beer 的话可以使用 {$beer}s,或者 ${beer}s
字符串中的定界符
可以使用 "<<<" 后接定界符,定界符除了不能初始化类成员外,和双引号作用相同,定界符的结束符需要在第一列,如:
$string = <<<EOF
随便写文本
这里的所有文本都将成为变量的值
可以出现任意变量、引号、转义等
EOF;
类型转换
PHP 中有两种类型转换方式,其中一种为自动转换,将小的数据类型转换为较大的数据类型时自动发生;另一种为强制转换,强制转换有三种方式:
- setType(变量名, 类型);。此函数会直接修改变量的数据类型,是不可逆操作,有可能丢失精度
- 变量2 = (类型)变量1;。不改变 变量1 的数据类型,直接将转换后的值赋值给 变量2
- 变量2 = 类型val(变量1);。调用函数,不改变 变量1 的数据类型,直接将转换后的值赋值给 变量2。例如:$b = intval($a);
与变量有关的函数
- isset(变量);。判断变量是否存在,如果值为 NULL 也等价于不存在
- unset(变量);。释放变量所占资源
- setType(变量, 类型);。改变变量数据类型
- getType(变量);。获取变量数据类型
- empty(变量);。判断变量是否为空
- var_dump();。输出变量的类型和值
- is_类型(变量);。判断变量是否为某个类型,如:
is_int()
is_array()
is_resource()
is_scalar()——是否为标量
is_numeric()——是否为数字或数字字符串
is_callable()——判断是否为有效函数名
常量
- 定义:define("常量名", 值);
- 使用:直接使用常量名,不需要加 "$"
- 命名习惯:全部大写,使用 "_" 区分单词
- 常量的类型:只能是标量类型
- 相关函数:defined("常量"),判断常量是否已经定义
- 注意事项:不能使用 unset() 删除常量;不论何时都不加 "$"
特殊常量
PHP 中的特殊常量有 2 种:预定义常量、魔术常量。
预定义常量是由系统预先设定好的,比如说:M_PI:数学中的 π
魔术常量每次的取值都不相同,是和运行环境有关的常量,如:
__FILE__:取文件全路径名
__LINE__:取代码行数
__FUNCTION__:取调用的函数名
PHP_VERSION:取当前 PHP 版本