语法规范
文档中只有php代码,结束标记要省略掉
注释
单行:# 或者 //
多行:/* 代码 */
变量:
普通变量:$
可变变量:等量代换
$a = "b";
$b = "c";
$c = "hello world";
echo $c;//hello world
数据类型:
标量类型
整型:
浮点型
布尔型:true/TRUE/FALSE/false
字符串型:
定界符
单引号
双引号
heredoc:相当于双引号
nowdoc:相当于单引号
heredoc的写法:
<<
代码
名称:
<<
代码
名称;
nowdoc的写法:
<<
代码
名称:
+ 转义符
+ \n \r \t (源代码中有效果,页面上只显示一个空格)
+ 花括号{}
+ 将变量括成整体
+ 对字符串的指定操作进行CRUD
+ 复合类型
+ 数组
+ 对象
+ 特殊类型
+ 资源
+ 空
+ 变量未声明
+ 声明一变量且复制为null
+ 经过unset()注销过的变量
```php
说明:
1. 单引号:不解析变量,双引号:解析变量
2. 单引号只解析 \\ 和 \'
3. PHP引擎在解析变量的时候会尽可能多的向后取合法字符,认为取的越多,这个变量的含义越明确
例:
$username = 'king'
期望得到:名称King是我
echo "名称$username是我" //报错
echo "名称$username 是我" //名称$username 是我,此时用空格,防止解析错误
echo "名称{$username}是我"
echo "名称${username}是我"
```
```php
{}:
1. 不用对中文字符进行CRUD
2. {}对多个空格只解析为一个空格,但字符串的长度不变
$string = 'king';
$string{7} = 'e';
echo $string;//king e
var_dump($string);//string(8) "king e"
```
数据类型转换
自动转换:
程序会根据上下文环境自行转换
其他类型转数值型:
true —— 1
false —— 0
null —— 0
字符串如果以非法数值开始——0,
以合法数值开始,一直取到第一个非法数值结束
其他类型转换为字符串型
数值型转为本身
true——1
false,null——空字符串
数组——Array
资源——Resource.id #数字
对象不能直接转为字符串
其他类型转为布尔型(是假的有)
0
0.0
空字符串''或""或'0'或"0",但"0.0"为真
null
空数组
强制转换
临时转换
(变量类型)$变量名称
整型 int/integer
浮点型 float / double / real
字符串型 string
布尔型 bool / boolean
空 unset
数组 array
对象 object
通过系统函数
interval($val)
floatval(
val)
strval($val)
boolval($val)
注意:临时转换不改变变量本身的类型
永久转换
settype(
trpe)——设置变量类型,返回值为布尔型,其意为是否chengg
gettype($var)——返回变量的类型,可能会被移除
通过变量的函数库来检测变量的类型 is_*($var),返回布尔值
is_int() / is_integer() / is_long()
is_float() / is_double() / is_real()
is_string()
is_bool()
is_null()
is_scalar() ——是否为标量类型
is_array()
is_object()
is_resource()
is_numeric() ——是否为数值型或字符串形式的数值型
常量
系统常量
自定义常量
定义常量
5. 1. 1. 1. 1. define()——define($name,$value)
1. 常量名称不加$
2. 常量最好大写
3. 常量默认区分大小写
4. 常量的作用域是全局
5. 常量一经定义,在脚本中执行结束才会被释放
6. 常量的值可以是标量类型,也可以是数组
const 关键字定义 —— const NAME = 值
使用常量
直接使用常量的名称即可
constant($name)——根据常量名取常量的值
检测常量是否存在
defined($name)
获取所有已定义的常量
get_defined_constants()——返回值:包含系统变量和自定义变量的数组
魔术常量
__LIKE__ 当前行号
__FILE__ 当前文件的绝对路径和文件名
__DIR__ 文件的完整路径
__FUNCTION__ 当前的函数名称
__CLASS__ 当前的类名
__METHOD__ 当前的方法名
__TRAIT__ 当前的TRAIT名称
__NAMESPACE__ 当前的命名空间的名称
预定义变量
$globals 超全局变量,包含以下所有的预定义变量
$_SERVERS 服务器和执行环境信息变量
$_ENV 环境变量
$_COOKIE HTTP COOKIES
$_SESSION HTTP SESSIONS
$_FILE 文件上传的信息变量
$_GET HTTP GET变量,主要接受以?形式传递的数据——$_GET['名称']
$_POST HTTP POST变量,主要接受post形式发送的数据——$_POST['名称']
$_REQUESTS $_GET + $_POST + $_COOKIE
运算符
+-*/%
自增自减
注意:
数值型支持
布尔型不支持
null只支持递增,不支持递减
字符串只支持递增,不支持递减
其他
$a<=>$b ——当$a小于,等于,大于$b时,分别返回-1,0,1的integer的值
$a??$b??$c
逻辑运算符()
and 短路
or 短路
xor 异或,不同为真,相同为假
!
&& 短路
|| 短路
错误抑制符 @ 抑制通知错误,但不能抑制语法错误和致命错误
三元运算符
优先级:有短路优先考虑,通过()来改变优先级,不重要
常用函数
mt_rand($min,$max) ——产生随机数
ord($charcter) ——将字符转为ASCII码
chr($ascii) ——将ASCII码转为字符