# PHP 语法参考
# 基本语法
1. 如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。
2. 自 PHP 5.4 起,短格式的 echo 标记 <?= ?> 总会被识别并且合法,而不管 short_open_tag 的设置是什么。
# 数据类型
1.PHP 支持 8 种原始数据类型 boolean(布尔型) integer(整型) float(浮点型,也称作 double) string(字符串) array(数组) object(对象) resource(资源) NULL(无类型)
#转换为布尔值 | |
var_dump((bool) ""); // bool(false) | |
var_dump((bool) array()); // bool(false) | |
var_dump((bool) "false"); // bool(true) | |
#整型溢出 | |
$large_number = 2147483648; | |
var_dump($large_number); //float (2147483648) 32 位系统 | |
$large_number = 9223372036854775808; | |
var_dump($large_number); //float (9.2233720368548E+18) 64 位系统 |
通过函数 intval () 来将一个值转换成整型(注意最大范围)。
当从浮点数转换成整数时,将向下取整。决不要将未知的分数强制转换为 integer,这样有时会导致不可预料的结果。
永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
String 字符串不支持 Unicode,最大可以达到 2GB。
字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析(\n 换行 \r 回车),变量也会被解析。
heredoc 结构和 nowdoc 结构。
string 中的字符可以通过一个从 0 开始的下标,用类似 array 结构中的方括号包含对应的数字来访问和修改。
自 PHP 5.4 起可以使用短数组定义语法,用 [] 替代 array ()。
键名 key 会被强制转换为整型(包含有合法整型值的字符串、浮点数、布尔值),Null 会被转换为空字符串。
如果在数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了。
自 PHP 5.4 起可以用数组间接引用函数或方法调用的结果。之前只能通过一个临时变量。
使用 (unset) $var 将一个变量转换为 null 将不会删除该变量或 unset 其值。仅是返回 NULL 值而已。
2.PHP 类型比较
# 变量
1.PHP 变量名是区分大小写的,一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。
2. 引用赋值:新的变量简单的引用(换言之,"成为其别名" 或者 "指向")了原始变量。改动新的变量将影响到原始变量,反之亦然。使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)。只有有名字的变量才可以引用赋值。
3. 预定义变量
超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量 | |
$GLOBALS — 引用全局作用域中可用的全部变量 | |
$_SERVER — 服务器和执行环境信息 | |
$_GET — HTTP GET 变量 | |
$_POST — HTTP POST 变量 | |
$_FILES — HTTP 文件上传变量 | |
$_REQUEST — HTTP Request 变量 | |
$_SESSION — Session 变量 | |
$_ENV — 环境变量 | |
$_COOKIE — HTTP Cookies | |
$php_errormsg — 前一个错误信息 | |
$HTTP_RAW_POST_DATA — 原生POST数据 | |
$http_response_header — HTTP 响应头 | |
$argc — 传递给脚本的参数数目 | |
$argv — 传递给脚本的参数数组 |
# 常量
1. 常量是一个简单值的标识符(名字),在脚本执行期间该值不能改变,用正则表达式是这样表达的:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*。