My Little World

基础知识

变量/数据类型

1.必须要以$开始。如变量x必须要写成$x
2.变量的首字母不能以数字开始
3.变量的名字区分大小写
4.变量不要用特殊符号、中文,_不算特殊符号
5.变量命名要有意义(别写xxx,aaa,ccc这种 变量名)

echo 显示命令
/*
多行注释 这里是注释区域代码
*/
// 表示单行注释

1.整型
8进制声明: 以0开始,后面跟0-7的整数 $bajingzhi = 033145;
16进制声明: 以0x开始,后面跟0-f的,0x的abcdef不区分大小写。$shiliu = 0x6ff;
2.布尔类型
true/false
布尔值=false .
整数值=0
浮点数=0.0
空字符串
空数组
3.字符串
用单引号声明 $zhifu = ‘曾经有操蛋的爱情摆在我面前’;
用双引号声明 $str = “如果非要在滚犊子前面加上一个时间的话我愿意是马上。”;
字界符声明
1).在变量后面的等号写三个小于号(<<<)。
2).然后在<<<后面写上字符(建议英文大写字符)。如下例中的:ABC
3).然后换行写上任意想写的字符
4).写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC;

1
2
3
4
5
6
7
8
9
$dingjie = <<<ABC
因为在
一千年以后
世界
早<br />

<i>没了我</i>
别等到一千年以后<h1>世界早已忘了我</h1>
ABC;

换行在显示时显示空格,<br/>表示显示换行

1.双引号解析变量,但是单引号不解析变量。

2.在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。要在变量后面接上特殊字符,要用空格等分开。

3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。

4.双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\’ 和\

5.单引号效率高于双引号,尽可能使用单引号

6.双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。
$legend = ‘猛虎’;
$NoAlike = “心有’$legend’,细嗅蔷薇”;
echo $NoAlike;//心有’猛虎’,细嗅蔷薇

7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。

1
2
3
4
5
6
<?php
$php = 'PHP中文网';
//中间加了空格
$str = $php . 'aaaa';
echo $str;//PHP中文网aaaa
?>

8.定界符声明字符串可以解析变量,加入单双引号同样会以单双引号形式显示出来,引号中间是变量的话,同样会被解析出来。
4.浮点型
小数
var_dump() 是一个函数。向括号()中间插入变量。这个函数,会打印出来数据类型,还会对应显示变量的长度和值。

$f1 = 1;
var_dump($f1);//int(1)
$f1 = 1.2;
var_dump($f1);//float(1.2)
两个浮点型数据不能作比较,因为实际比较值不确定
5.null
主要有以下三空情况会产生空(null)类型:

1.通过变量赋值明确指定为变量的值为NULL

2.一个变量没有给任何值

3.使用函数unset()将变量销毁掉
empty()可以向括号中间传入一个变量。这个变量的值如果为false或者为null的话,返回true。
isset()可以向括号中间传入一个或者多个变量,变量与变量间用逗号分开。只要有有一个变量为null,则返回false。否则,则返回true。

1
2
3
$jia = false;
$result = isset($jia);
var_dump($result);//bool(true)

unset()这个函数的功能是毁掉变量。unset(变量)括号中间插入想要毁掉的变量名,这个变量就会被毁掉。

1
2
3
$iphone = '手机';
unset($iphone);
var_dump($iphone);//null

6.数组
一个或者多个值
一个或者多个值用逗号分开
$shu = array(1,2,3);
7.资源类型
资源就提操作我们可见和不可见的文件、网络和数据

数据类型转换

gettype(传入一个变量) 返回变量的类型。$type = gettype($float);
数据类型判断
is_int 是否为整型
is_bool 是否为布尔
is_float 是否是浮点
is_string 是否是字符串
is_array 是否是数组
is_object 是否是对象
is_null 是否为空
is_resource 是否为资源
is_scalar 是否为标量
is_numeric 是否为数值类型
is_callable 是否为函数

布尔值判断时的自动类型转换:
1,整型的0为假,其他整型值全为真
2, 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。
3,空字符串为假,只要里面有一个空格都算真。
4,字符串的0,也将其看作是假。其他的都为真
5,空数组也将其视为假,只要里面有一个值,就为真。
6,空也为假
7, 未声明成功的资源也为假

运算自动类型转换:
布尔型:整型、浮点型
字符串:整型、浮点型

强制类型转换有三种方式:
1.用后面的三个函数可以完成类型转换,intval()、floatval()、strval()
2.变量前加上()里面写上类型,将它转换后赋值给其他变量
3.settype(变量,类型) 直接改变量本身
转换结果:
1.空转为整型会为整型的0
2.空转为浮点会为浮点的0
3.空转为字符串会为空字符串‘’
4.浮点的123.0转为字符串会为字符串123
5.浮点的123.2转为字符串会为字符串的123.2
6.浮点即使小数点再大,它都会被干掉,会舍掉小数点后面的值
7.如果字符串转为整型的时候,如果数值在前面,会将前面的数值拿出来做为整型的转换值。
8.settype(变量,’null’); 等价于 unset()一个变量
9.$目标变量 = (类型)$操作变量 只会改变目标变量的类型,不会改变原变量的类型,Settype是改变原值

常量

define(常量名,常量值) 定义常量
注:
1.常量值只能为上一章中我们讲到的标量。
2.常量名可以小写,但是通常大写
3.常量名可以不加引号,但是通常加上引号。
4.在字符串中调用常量的时候,必须在引号外面
5.常量名建议只用字母和下划线

内置常量

LINE 当前所在的行
FILE 当前文件在服务器的路径
FUNCTIOIN 当前函数名
CLASS 当前类名
METHOD 当前成员方法名
PHP_OS PHP运行的操作系统
PHP_VERSION 当前PHP的版本
TRAIT Trait 的名字,php5.4新加
DIR 文件所在的目录
NAMESPACE 当前命名空间的名称(区分大小写)

可变变量

已声明的变量前,再加上变量符

1
2
3
4
5
6
//定义了一个变量叫作 $shu 将$shu这个变量的值设为字符串的biao
$shu = 'biao';
//定义了一个【变量】$biao。将他的值设置为鼠标
$biao = '鼠标';
//$$shu 就是可变变量:在已声明的变量$shu前又加上了一个变量符
echo $$shu;//'鼠标'

即$shu 是biao,$biao是’鼠标’
还可以加多个$即一层层替换过去就行

外部变量

$_GET 将得到get方法传值的数据 参数会显示在URL(网址栏)上。 $u = $_GET[‘username’];
$_POST 将得到post方法传值的数据 通过浏览器的请求头文件传递的数据,不会显示在url上。 $u = $_POST[‘username’];
$_REQUEST即可以接收get传值也可以接收post传值。 $u = $_REQUEST[‘username’];
$_COOKIE 得到会话控制中cookie传值
$_SESSION 得到会话控制中session的值
$_FILES 得到文件上传的结果
以上这些变量全是超全局的。在任何环境都能用

环境变量

$_SERVER
$_SERVER[“REQUEST_METHOD”] 请求当前PHP页面的方法
$_SERVER[“REQUEST_URI”] 请求的URI
$_SERVER[“SERVER_SOFTWARE”] 用的是哪一种服务器
$_SERVER[“REMOTE_ADDR”] 客户的IP地址
$_SERVER[“SERVER_ADDR”] 当前服务器的IP地址
$_SERVER[“SCRIPT_FILENAME”] 主前请求文件的路径
$_SERVER[“HTTP_USER_AGENT”] 当前访问这个网址的电脑和浏览器的情况
$_SERVER[“HTTP_REFERER”] 上级来源(用户从哪个地址进入当前网页的)
$_SERVER[“REQUEST_TIME”] 当前的时间
URI 和URL都是网址,但是URL带有了主机地址部份,而URI不带主机地址部份,例如:
http://www.php.cn/abc.php?username=php 是一个URL(统一资源定位符),
而URI是不带主机和(http://)协议的部份:abc.php?username=php

变量引用

情况1:
$fo = 5;
//$fo的值为5,将5赋值
$bar = $fo;
//$bar的值原来为5,现在将值改为6
$bar = 6;
//$bar的结果为6
echo $bar.’
‘;
//$fo的结果为5
echo $fo.’
‘;
情况2:
$fo = 5;
//注意,加上了一个&符哟
$bar = &$fo;
$bar = 6;
//$bar的结果为6
echo $bar.’
‘;
//$fo的结果为6
echo $fo.’
‘;

算数运算

+ 加号 $x + $y
- 减号 $x - $y
* 乘号,乘以 $x * $y
/ 除号,除以 $x / $y
% 取余也叫取模、求模 $x % $y
优先级:先乘除,后加减
改变优先级,那就用(),将想要优先的值给括起来

赋值运算

符号 举例 等价式
+= $x += $y $x = $x + $y
-= $x -= $y $x = $x - $y
*= $x *= $y $x = $x * $y
/= $x /= $y $x = $x / $y
%= $x %= $y $x = $x % $y
.= $x .= $y $x = $x . $y

例.
$x = 5;
$y = 8;
$x .= $y;
echo $x; //58

自加自减

$x++ 先赋值后加
$x– 先赋值后减
++$x 先加后赋值
–$x 先减后赋值

比较运算符

大于 >
小于 <
大于等于 >=
小于等于 <=
不等于 !=
等于 ==(赋值是=号,所以==规定为等于)5==‘5’ =>true
全等(判断类型等于) ===
全不等(判断类型不等于) !==

逻辑运算

x and $y 逻辑与(并且关系) $x 和$y 为真则返回真
$x && $y 同上 同上
$x or $y 逻辑或 $x,$y均为false时为假,其他情况全为真
$a||$b 同上 同上
!$x 逻辑非 取反,即true变为false,false变为true
$x xor $y 逻辑异或 相同取false,相异为true
短路
逻辑与:如果前面第一个条件为false了,后面就可以不用执行了。
逻辑或:前面第一个条件为true了,后面就不用执行了
但是注意

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1.
$x = false;
$y = 2;
if($x & $y++){
echo '真';
}else{
echo '假';
}
echo $y; //假3
2.
$x = true;
$y = 2;
if($x | $y++){
echo '真';
}else{
echo '假';
}
echo $y; //真3

位运算

$a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
$a | $b Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。
$a << $b 左移 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b 右移 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

三元运算符和其他运算符

$x? 真代码段:假代码段 判断是否为真假 ? 真情况 : 假情况;
(反引号) 反引号中间插代命令,执行系统命令,等价于shell_exec函数
@ 单行抑制错误,把这一行的错误不让它显示出来了,效率低不建议使用
=> 数组下标访问符
-> 对象访问符
instanceof 判断某个对象是否来自某个类,如果是的返回true,如果不是返回false

流程控制

if、else 语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
1.
<?php
if(布尔条件)
布尔值为真(true)时执行,只能写一行代码;
?>
2.
<?php
if(布尔条件)
布尔值为真(true)时执行,只能写一行代码;
else
布尔值为假(false)时执行,只能写一行代码;
?>
<?php
if(布尔条件){
布尔值为真(true)时执行,多行代码;
}
else{
布尔值为假(false)时执行,多行代码;
}
?>
3.
<?php
if(判断语句1){
执行语句体1
}elseif(判断语句2){
执行语句体2
}else if(判断语句n){
执行语句体n
}else{
最后的else语句可选
}
//后续代码
?>
4.
<?php
if(判断1){
if(判断2){
代码段 1
}else{
代码段2
}
}else{
if(判断3){
代码段3
}else{
代码段4
}
}
?>

switch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
switch(变量){ //字符串,整型
case 具体值:
执行代码;
break;
case 具体值2:
执行代码2;
break;
case 具体值3:
执行代码3;
break;
default:
}
?>

循环结构和相关关键字语句

1.
while(条件){
代码
}
2.
do {
//代码块
} while (判断);
3.
for (表达示1; 表达示2; 表达示3){
需要执行的代码段
}
4.
exit 从当前处停止后续执行
break 跳出循环或者跳出结构体执行后续代码
continue 跳出此次循环,下次循环继续
5.
goto 操作符可以用来跳转到程序中的另一位置。
该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。
PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。

1
2
3
4
5
6
7
<?php
goto wan;
echo '天王盖地虎';
wan:
echo '小鸡炖蘑菇';
?>
仅输出 '小鸡炖蘑菇'

函数

自定义函数

function 函数名([参数名1[=值1], 参数名2[=值2], 参数名n[=值n]])
{
函数中的功能体
[return 返回值]
}
1.函数以function开始
2.function后面接空格,空格后接函数名
3.函数名与变量命名规则基本一样,函数名只能是字母,数字,下划线的组合,并且之间不能包含空格,数字不能放在变量名首位,但是不同的是:函数名不区分大小写
4.所谓参数其实就是变量
5.函数名后接括号,括号内跟参数,参数全都有[](中括号)括起来了,代表参数可填可不填
6.如果有参数的话,参数后可以接(=)等号,等号接默认值。参数值也是用[](中括号)括起来的,代表选填
7.函数后的参数变量,主要功能是把函数体外的变量值,传入函数体内来使用,函数体的变量和函数体外的变量通常是两个不 同的变量。
8.函数中的具体功能(功能体)用大括号括起来,代表这是一个函数的功能区间
9.函数可以有返回值也可以没有返回值,用[](中括号)括起来的,代表选填。
10.return后接空格,空格后接返回值,若有return,return后的代码均不执行。
11.函数的执行没有顺序关系,可以在定义处之前的位置调用
12.函数不能被定义两次,即函数不能被重载

回调函数

回调函数,就是在处理一个功能的时候,调用这个函数的时候,还可以传入一个函数配合、协助进行处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function woziji($one,$two,$func){
//我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false
if(!is_callable($func)){
return false;
}
//我把$one、$two相加,再把$one和$two传入$func这个函数中处理一次
//$func是一个变量函数,参见变量函数这一章
echo $one + $two + $func($one,$two);
}
//我们定义几个函数试试
function plusx2( $foo , $bar){
$result = ($foo+$bar)*2;
return $result;
}
function jian( $x , $y ){
$result = $x - $y;

return $result;
}
//调用一下函数,woziji,向里面传入参数试试
echo woziji(20,10,'plusx2');
//将plusx2改成jian试试结果
echo woziji(20,10,'jian');
?>

变量函数

联系可变变量定义

1
2
3
4
5
6
7
8
9
10
11
12
<?php
function demo(){
echo '天王盖地虎';
}
function test(){
echo '小鸡炖蘑菇';
}
$fu = 'demo';
//把$fu变为了demo,把demo后加上了一个括号,就执行函数了
$fu();
//把$fu的值改为test字符串再试试?
?>

匿名函数

1.变量函数式的匿名函数

1
2
3
4
5
6
7
8
<?php
$greet = function($name)
{
echo $name.',你好';
};
$greet('明天');
$greet('PHP中文网');
?>

2.回调式的匿名函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function woziji($one,$two,$func){
//我规定:检查$func是否是函数,如果不是函数停止执行本段代码,返回false
if(!is_callable($func)){
return false;
}

//我把$one、$two相加,再把$one和$two传入$func这个函数中处理一次
//$func是一个变量函数,参见变量函数这一章
echo $one + $two + $func($one,$two);
}
woziji(20,30,function( $foo , $bar){
$result = ($foo+$bar)*2;
return $result;
}
);
?>

内部函数

1.内部函数名,不能是已存在的函数名
2.假设在函数a里面定义了一个内部函数,不能定用两次函数a。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function foo()
{
echo '我是函数foo哟,调一下我才会执行定义函数bar的过程<br />';
function bar()
{
echo '在foo函数内部有个函数叫bar函数<br />';
}
}
//现在还不能调用bar()函数,因为它还不存在
// bar();
foo();
//现在可以调用bar()函数了,因为foo()函数的执行使得bar()函数变为已定义的函数
bar();
//再调一次foo()会报错
foo();
?>

变量作用域

1.通过$GLOBLAS来读取外部变量

1
2
3
4
5
6
7
8
9
10
<?php
$one = 10;
function demo(){
$two = 100;
$result = $two + $GLOBALS['one'];
return $result;
}
//你会发现结果变成了110
echo demo();
?>

2.通过$GLOBLAS,在函数内修改外部变量

1
2
3
4
5
6
7
8
$hongniu = '我是一个兵,来自老百姓';
function test(){
echo '执行了函数test哟<br />';
//调用test()函数,将通过$GLOBALS['hongniu'],把$hongniu的值改变掉
$GLOBALS['hongniu'] = '帮助别人很快乐';
}
test();
echo $hongniu;//帮助别人很快乐

3.通过$GLOBLAS,在函数内创建全局变量

1
2
3
4
5
6
function hello(){
$GLOBALS['que'] = '提神喝茶更好哟';
echo '你调了一下函数hello<br />';
}
hello();
echo $que;

参数引用

同比变量引用,将形参和实参指向到同一个位置。如果形参在函数体内发生变化,那么实参的值也发生变化

递归函数

1.代码是从上到下执行的,所有代码没有exit等停止符,函数必须执行完。
2.如果函数从函数A跳至函数B后,必须把函数B执行完成再执行函数A余下的代码。
3.递归函数必须要能执行完有结束条件,不然函数就会限入死循环。函数会永远的自我执行下去。

静态变量

声明一个静态变量,第二次调用函数的时候,静态变量不会再初始化变量,会在原值的基础上读取执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
//--------------如何理解static静态变量-----------

/** 普通局部变量 */
function local() {
$loc = 0; //这样,如果直接不给初值0是错误的。
++$loc;
echo $loc . '<br>';
}
local(); //1
local(); //1
local(); //1
echo '===================================<br/>';

/** static静态局部变量 */
function static_local() {
static $local = 0 ; //此处可以不赋0值
$local++;
echo $local . '<br>';
}
static_local(); //1
static_local(); //2
static_local(); //3
//echo $local; 注意虽然静态变量,但是它仍然是局部的,在外不能直接访问的。
echo '=======================================<br>';

/** static静态全局变量(实际上:全局变量本身就是静态存储方式,所有的全局变量都是静态变量) */
function static_global() {
global $glo; //此处,可以不赋值0,当然赋值0,后每次调用时其值都为0,每次调用函数得到的值都会是1,但是不能想当然的写上"static"加以修饰,那样是错误的.
$glo++;
echo $glo . '<br>';
}
static_global(); //1
static_global(); //2
static_global(); //3
?>

系统内置函数

PHP手册中函数
使用函数的重点是三块:
1.了解函数的功能,特别是常用函数的功能
2.了解函数的参数
3.了解函数的返回值
函数的基本用法的全部注意事项:
1.直接返回布尔型,如bool copy ()
2.带有MIXED参数的函数如何调用。Mixed表示任何类型的数据。如Array_unshift()
3.参数中带有&符的参数,一定要传一个变量做为参数。函数里面改变了他的值。
4.带有[]的参数,表示可选项。
5.带有…的参数,表示可以传任意多个参数。
6.带有callback的参数,表示回调函数。需要传一个函数进来。Array_map()
7.函数支持的版本你要了解

包含函数

可以引入其他文件的函数
函数 包含失败 特点
Inlcude 返回一条警告 文件继续向下执行。通常用于动态包含
Require 一个致命的错 代码就不会继续向下执行。通常包含极为重要的文件,整个代码甭想执行
Include_once 返回一条警告 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被被包含过,不再包含
Require_once 一个致命的错 除了原有的Require功能一外,会做一次once检测,防止文件反复被包含

数学常用函数

函数名 描述 实例 输入 输出
abs() 求绝对值 $abs = abs(-4.2); //4.2 数字 绝对值数字
ceil() 进一法取整 echo ceil(9.999); // 10 浮点数 进一取整
floor() 舍去法取整 echo floor(9.999); // 9 浮点数 直接舍去小数部分
fmod() 浮点数取余 “$x = 5.7;$y = 1.3;$r = fmod($x, $y);// $r equals 0.5, because 4 * 1.3 + 0.5 = 5.7 “ 两个浮点数,x>y 浮点余数
pow() 返回数的n次方 echo pow(-1, 20); // 1 基础数 n次方 乘方值
round() 浮点数四舍五入 echo round(1.95583, 2);// 1.96 一个数值 保留小数点后多少位,默认为0 舍入后的结果
sqrt() 求平方根 echo sqrt(9); //3 被开方的数 平方根
max() 求最大值 “echo max(1, 3, 5, 6, 7); // 7 echo max(array(2, 4, 5)); // 5” 多个数字或数组 返回其中的最大值
min() 求最小值 min 多个数字或数组 返回其中的最小值
mt_rand() 更好的随机数 echo mt_rand(0,9);//n 最小/最大,随机数 随机返回范围内的值
rand() 随机数 echo rand() 最小/最大,随机数 随机返回范围内的值
pi() 获取圆周率值 echo pi(); // 3.1415926535898 无 获取圆周率

获取时间信息函数

UNIX时间戳: 从Unix纪元(1970 年 1月1日零时)开始到一个时间经过的秒数

date_default_timezone_get() 取得一个脚本中所有日期时间函数所使用的默认时区
date_default_timezone_set(‘Asia/shanghai’) 设置所有日期时间函数的默认时区

date_default_timezone_set(‘Asia/shanghai’);
echo date_default_timezone_get (); //Asia/shanghai

time() 获取当前时间的 Unix 时间戳。

string date ( string $format [, int $tirnestamp] ) 将一个时间进行格式化输出,以方便时间的显示或存储,返回字符串
如果$timestamp没有输入值,则默认为当前的时间的时间戳。
$format是一个时间输出格式的字符串,需要使用规定的字符构造输出格式。
date函数的格式参数表:
字符 说明 返回值
d 月份中的第几天,有前导零的2 位数字 01 到31
D 英文星期几,3个字母 Mon到Sun
j 月份中的第几天,没有前导零 1 到31
l(字母) 英文星期几 Sunday到 Saturday
N 1格式数字表示的星期 1(表示星期一)到7(表示星期天)
S 每月天数后面的英文后缀,2个字符 st,nd,rd或者th。可以和jg一起用
w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
z 一年中的第几天 0到366
W 年份中的第几周,每周从星期一开始 42(当年的第42周)
F 月份,完整的文本格式 January 到 December
m 数字表示月份,有前导零 01 到 12
M 3个字母缩写表示的月份 Jan 到Dec
n 数字表示月份,没有前导零 1 到 12
t 给定月份所应有的天数 28 到 31
L 是否为闰年 如果是闰年为1,否则为o
o 格式年份数字 例如2007
Y 4 位数字完整表示年份 例如1999或2008
y 2 位数字表示的年份 例如99或08
a 小写的上午和下午值 am或pm
A 大写的上午和下午值 AM或PM
g 小时,12小时格式,没有前导零 1到12
G 小时,24小时格式,没有前导零 0 到 23
i 有前导零的分钟数 00 到 59
s 秒数,有前导零 00到59
e 时区标识
U 从Unix纪元开始至今的秒数 长整型数字


date(‘Y-m-d H:i:s’);//2017-04-28 14:53:01

array getdate ([ int $timestamp = time()) 用来获取当前系统的时间,或者获得一个时间戳的具体含义
函数的返回值是一个根据timestamp得到的包含有时间信息的数组。如果没有参数,则会返回当前的时间。getdate返回的数组,键名包括时间和日期的完整信息
键名 说明 返回值
secnods 秒 数字0到 59
minutes 分钟 数字0到59
hours 小时 数字 0到 23
mday 月份中第几天 数字 1到 31
wday 星期中第几天 数字0(表示星期天)到6(表示星期六)
mon 月份 数字 1 到 12
year 年 4 位数字表示的完整年份
yday 一年中第几天 数字0到365
weekday 星期几的英文 Sunday到 Saturday
month 月份的英文 January 到 December
0 自从Unix纪元开始的秒数 长整型数字

print_r(数组名)可以输出一个数组中所有的键名与值。

bool checkdate(int $month,int $day,int $year) 可以判断一个输出的日期是否有效。返回布尔类型,例如验证用户输入的时间是否正确
例 var_dump(checkdate(2, 29, 2011)); //bool(false) 2011年2月没有29日

int mktime (int $hour [, int $minute [, int $second [, int $month [, int $day [. int$year [, int $.is_dstl.l } ] ] 31 ) 可以对一个日期和时间获得一个本地化时间戳
函数的参数分别表示:时、分、秒、月、日、年、是否为夏令时。在使用这个函数时,需要注意所列的参数要与函数的参数含义相同。

int strtotime ( string $time [, int $now = time() ] ) 将英文文本的日期时间描述解析为 Unix 时间戳
1.传入一个字符串的时间 2.可选参数为是否传入unix时间戳,如果不传则是当前的unix时间戳。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//now为现在的当前时间
echo strtotime("now")."<br />";
//2000年9月10日
echo strtotime("10 September 2000")."<br />";
//当前时间加一天
echo strtotime("+1 day")."<br />";
//当前时间加一周
echo strtotime("+1 week")."<br />";
//当前时间加一周2天4小时2秒
echo strtotime("+1 week 2 days 4 hours 2 seconds")."<br />";
//下一个星期四
echo strtotime("next Thursday")."<br />";
//上一个星期一
echo strtotime("last Monday")."<br />";

mixed microtime ([ bool $get_as_float ] ) 能够返回当前 Unix 时间戳和微秒数可用于执行函数时间检测
如果你传入true的话,将会返回一个浮点类型的时间,这样方便参与运算。

字符串常用函数

函数名 描述 实例
trim() 删除字符串两端的空格或其他预定义字符 “$str = “\r\nHello World!\r\n”; echo trim($str);
rtrim() 删除字符串右边的空格或其他预定义字符 “$str = “Hello World!\n\n”; echo rtrim($str);”
chop() rtrim()的别名 同上
ltrim() 删除字符串左边的空格或其他预定义字符 “$str = “\r\nHello World!”; echo ltrim($str);”
dirname() 回路径中的目录部分(我们把它归在了字符串函数里了) echo dirname(“c:/testweb/home.php”);
str_pad() 把字符串填充为指定的长度 $str = “Hello World”; echo str_pad($str,20,”.”);
str_repeat() 重复使用指定字符串 echo str_repeat(“.”,13);
str_split() 把字符串分割到数组中 print_r(str_split(“Hello”));
strrev() 反转字符串 echo strrev(“Hello World!”);
wordwrap() 按照指定长度对字符串进行折行处理 “$str = “”An example on a long word is: Supercalifragulistic””; echo wordwrap($str,15);”
str_shuffle() 随机地打乱字符串中所有字符 echo str_shuffle(“Hello World”);
parse_str() 将字符串解析成变量 “parse_str(“id=23&name=John%20Adams”,$myArray); print_r($myArray);”
number_format() 通过千位分组来格式化数字 “echo number_format(“1000000”); echo number_format(“1000000”,2); echo number_format(“1000000”,2,””,””,””.””);”
strtolower() 字符串转为小写 echo strtolower(“Hello WORLD!”);
strtoupper() 字符串转为大写 echo strtoupper(“Hello WORLD!”);
ucfirst() 字符串首字母大写 echo ucfirst(“hello world”);
ucwords() 字符串每个单词首字符转为大写 echo ucwords(“hello world”);
htmlentities() 把字符转为HTML实体 $str = “”John & ‘Adams’””; echo htmlentities($str, ENT_COMPAT);
htmlspecialchars() 预定义字符转html编码
nl2br() \n转义为
标签 echo nl2br(“One line.\nAnother line.”);
strip_tags() 剥去 HTML、XML 以及 PHP 的标签 echo strip_tags(“Hello world!”);
addcslashes() 在指定的字符前添加反斜线转义字符串中字符 $str = “”Hello, my name is John Adams.” echo $str; echo addcslashes($str,’m’);”
stripcslashes() 删除由addcslashes()添加的反斜线 echo stripcslashes(“Hello, \my na\me is Kai Ji\m.”);
addslashes() 指定预定义字符前添加反斜线 $str = “Who’s John Adams?”;echo addslashes($str);
stripslashes() 删除由addslashes()添加的转义字符 echo stripslashes(“Who\’s John Adams?”);
quotemeta() 在字符串中某些预定义的字符前添加反斜线 $str = “Hello world. (can you hear me?)”; echo quotemeta($str);
chr() 从指定的 ASCII 值返回字符 echo chr(052);
ord() 返回字符串第一个字符的 ASCII值 echo ord(“hello”);
strcasecmp() 不区分大小写比较两字符串 echo strcasecmp(“Hello world!”,”HELLO WORLD!”);
strcmp() 区分大小写比较两字符串
strncmp() 比较字符串前n个字符,区分大小写
strncasecmp() 比较字符串前n个字符,不区分大小写 int strncasecmp ( string $str1 , string $str2 , int $len )
strnatcmp() 自然顺序法比较字符串长度,区分大小写 int strnatcmp ( string $str1 , string $str2 )
strnatcasecmp() 自然顺序法比较字符串长度,不区分大小写 int strnatcasecmp ( string $str1 , string $str2 )
chunk_split() 将字符串分成小块 str chunk_split(str $body[,int $len[,str $end]])
strtok() 切开字符串 str strtok(str $str,str $token)
explode() 使用一个字符串为标志分割另一个字符串 array explode(str $sep,str $str[,int $limit])
implode() 同join,将数组值用预订字符连接成字符串 string implode ( string $glue , array $pieces )
substr() 截取字符串 string substr ( string $string , int $start [, int $length ] )
str_replace() 字符串替换操作,区分大小写 mix str_replace(mix $search,,mix $replace,mix $subject[,int &$num])
str_ireplace() 字符串替换操作,不区分大小写 mix str_ireplace ( mix $search , mix $replace , mix $subject [, int &$count ] )
substr_count() 统计一个字符串,在另一个字符串中出现次数 int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )
substr_replace() 替换字符串中某串为另一个字符串 mixed substr_replace ( mixed $string , string $replacement , int $start [, int $length ] )
similar_text() 返回两字符串相同字符的数量 int similar_text(str $str1,str $str2)
strchr() 返回一个字符串在另一个字符串中开始位置到结束的字符串 string strstr ( string $str, string $needle , bool $before_needle )
strrchr() 返回一个字符串在另一个字符串中最后一次出现位置开始到末尾的字符串 string strrchr ( string $haystack , mixed $needle )
stristr() 返回一个字符串在另一个字符串中开始位置到结束的字符串,不区分大小写 string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
strtr() 转换字符串中的某些字符 string strtr ( string $str , string $from , string $to )
strpos() 寻找字符串中某字符最先出现的位置 int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
stripos() 寻找字符串中某字符最先出现的位置,不区分大小写 int stripos ( string $haystack , string $needle [, int $offset ] )
strrpos() 寻找某字符串中某字符最后出现的位置 int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
strripos() 寻找某字符串中某字符最后出现的位置,不区分大小写 int strripos ( string $haystack , string $needle [, int $offset ] )
strspn() 返回字符串中首次符合mask的子字符串长度 int strspn ( string $str1 , string $str2 [, int $start [, int $length ]] )
strcspn() 返回字符串中不符合mask的字符串的长度 int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] )
str_word_count() 统计字符串含有的单词数 mix str_word_count(str $str,[])
strlen() 统计字符串长度 int strlen(str $str)
count_chars() 统计字符串中所有字母出现次数(0..255) mixed count_chars ( string $string [, int $mode ] )
md5() 字符串md5编码 $str = “Hello”; echo md5($str)
iconv

mb_substr 获取字符串的部分 string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )
mb_http_output 设置/获取 HTTP 输出字符编码 mixed mb_http_output ([ string $encoding = mb_http_output() ] )
mb_strlen 获取字符串的长度 mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
iconv 字符串按要求的字符编码来转换 string iconv ( string $in_charset , string $out_charset , string $str )
iconv_substr 截取字符串的部分
iconv_get_encoding 获取 iconv 扩展的内部配置变量
mb_substr_count 统计字符串出现的次数
mb_check_encoding 检查字符串在指定的编码里是否有效
mb_strrpos 查找字符串在一个字符串中最后出现的位置
mb_split 使用正则表达式分割多字节字符串
parse_url 解释URL成为一个数组