isset()
检测变量是否已经设置过了:
|
|
gettype()
获取变量类型:
|
|
is_int()
, is_float()
…
判断变量是否是某种类型
|
|
调试打印变量
- echo 字符串,数字
- print_r 打印层次化数据,如数组、对象
- var_dump 打印变量的类型及其值
不要用echo
和print_r
打印布尔值,用var_dump
打印布尔值和null
echo
打印数组、false
和null
都是空行,打印true
为1
字符串转换为数字
从左至右截取,直到遇到不合法字符,取到的部分转换为数字
数字/字符串/数组转换为数组
假:
|
|
其余全为真
empty(var)
检查变量是否为空
- var为空,返回
TRUE
, 为空:''
,0
,0.0
,'0'
,NULL
,FALSE
,array()
, 没有任何属性的对象 - var非空非零,返回
FALSE
赋值:传值赋值,引用赋值
传值赋值
|
|
引用赋值
|
|
unset() 销毁变量
|
|
引用赋值时,一个变量被销毁,另一个不会被销毁。
动态变量名
|
|
动态函数名
|
|
+
加法运算
int有上限,数太大了,会自动转换为浮点型。
%
取模
结果正负仅取决于被除数。
一段有趣的代码
- strpos() 区分大小写,返回首次出现的位置或没找到false
- ==:只验证值
- ===:值和类型都要相等
code:
|
|
output:
|
|
reason:
==
时, 0
会被自动转换为false
.
字符串拼接
switch case
case判断条件成立时,后面不会继续判断,所以每块代码结束后,要加break;
函数
- 函数不区分大小写,但仍建议声明时和调用时大小写保持一致
- 函数参数如果有默认参数,应写在最后。
在函数内操作全局变量
&
global $a;
$GLOBALS['var_name']
$GLOBALS
是系统给的九个超级全局变量之一。
时间戳函数
Unix纪元:格林威治时间1970年1月1日00:00:00
time()
返回自从Unix纪元到当前的秒数
eg:
|
|
microtime()
返回自从Unix时间戳和微秒数。
函数原型mixed microtime([bool $get_as_float])
,mixed
表示返回类型不止一种。
用于计算脚本的运行时间:在脚本执行处和结尾处都获取一个时间戳,两者相减。
eg:
|
|
date()
时间戳格式化
格式化后时间与当前时间有时差
- 找到
php.ini
- 将时区更改为
date.timezone = PRC
eg:
|
|
日期解析函数 给定具体日期时间,转换为时间戳
- mktime() 取得一个日期的Unix时间戳。eg
echo mktime(18, 30, 16, 8, 22, 1992);
. - strtotime() 将任何英文文本的日期时间描述解析为Unix时间戳
- checkdate() 验证日期是否合法。eg
var_dump(checkdate(2, 30, 2001));
.
strtotime() eg:
|
|
定义大段字符串 heredoc nowdoc
heredoc 双引号””
要求严格:开头前后不能有空格,中间不能插注释,前后保持一致,大小写均可
|
|
nowdoc 单引号’’
|
|
单双引号
- 双引号转义较多,单引号只能转义两个
\
和'
- 双引号可以解析变量的值,单引号不解析。
- 速度,单引号没有过多的转义和变量解析,速度上比双引号快。字符串、数组的键
$arr['name']
优先使用单引号。
字符串函数
字符串长度
- int strlen($str) 计算字符串长度,
$str
为中文字符时,计算字节数。 - int mb_strlen(sting $str [, string $encoding]) 计算字符串长度,尤其是字符串中包含中文字符的情况,计算的是中文字符数,非字节数。
胞嘧啶
,返回3
。(
Eg GB2312一个汉字2字节,UTF-8一个汉字3字节)。
mb
宽字节,国际编码支持,英文、法文、中文等都支持。mb_strlen()
不是PHP核心函数,需要确保php.ini
中extension=php_mbstring.dll
一行没有被注释掉。
字符串位置
- strpos($str, search, [int]) search在$str中从int处开始第一次出现的位置
- stripos($str, search, [int]) search在$str中从int处开始第一次出现的位置,不区分大小写
- strrpos($str, search, [int]) search在$str中从int处开始最后一次出现的位置
可能返回布尔值FALSE,也可能返回等同于FALSE的非布尔值,因为字符串位置从0
开始,而不是1
。
字符串替换
|
|
子串
|
|
分割、连接、反转
|
|
空白处理
|
|
字符串转义函数
|
|
字符串比较函数
int strcmp($str1, $str2)
strcasecmp() 不区分大小写
BOM头
有些utf-8文档前面会加上三个人眼无法看到的字节。