PHP
使用一堆标签将其代码部分包含起来
支持4种标记风格

php的标签风格

XML风格

  1. <?php
  2. echo"XML风格";
  3. ?>

脚本风格

  1. <script language ="php">
  2. echo'脚本风格'
  3. </script>

简短风格

  1. <?echo'简短风格';?>

ASP风格

  1. <%
  2. echo'ASP风格';
  3. %>

PHP注释

对代码的说明
一般放在代码的上方或尾部
不影响代码的执行

单行注释

类似c++的语法
可写在PHP语句的上方或后方

上方单行注释

<?php
//上方单行注释
echo’c++风格注释’;
?>

后方单行注释

<?php
echo’c++风格注释’;//后方单行注释
?>

  1. <?php
  2. echo'看到了'//?>没有看到
  3. ?>

多行注释

类似C语言的语法
有块注释和文档注释

块注释

  1. <?php
  2. /*
  3. $a=1;
  4. $b=2;
  5. echo($a+$b);
  6. */
  7. echo'多行注释';
  8. ?>

文档注释

  1. <?php
  2. /*说明:项目工具类
  3. *作者:单飞阳
  4. *Email:2695494301@qq.com
  5. */
  6. class Util
  7. {
  8. /**
  9. * 方法说明:给字符串加前缀
  10. *参数: String $str
  11. *返回值: String
  12. */
  13. function addPrefix($str)
  14. {
  15. $str.='mingri';
  16. return $str;
  17. }
  18. }
  19. ?>

风格的注释

例:
<?php
echo’这是#风格的注释’;
?>

PHP的数据类型

八种原始类型。
4种标量类型 ,即boolean(布尔型)、integer(整型)、float/double(浮点型)和string(字符串型);
2种复合类型,即array(数组型)和object(对象);
2种特殊类型,即resource(资源)和null。

标量数据类型

最基本的数据结构
只能存储一个数据
4种

类型 说明 注释
boolean(布尔型) 只有两个值,真(true)和假(false) 最简单的类型
string(字符串型) 计算机所能表示的一切字符的集合 连续的字符序列
integer(整型) 只包含整数,可正可负
float(浮点型) 存储小数和数字 有小数位

布尔型(boolean)

仅保存true或false
true和false是PHP的内部关键字
设定一个布尔型变量,只需将true或false赋值给变量即可
布尔型变量通常出现在条件或循环语句的表达式中
例:

  1. <?php
  2. $boo=true;//声明一个boolean类型变量,赋初值true
  3. if($boo==true)
  4. echo'$boo为真';
  5. else
  6. echo'$boo为假';
  7. ?>

结果:$boo为真

字符串型(string)

连续的字符序列(可为数字,字母和符号)
每个字符只占用一个字节
3种定义字符串的方式
单引号(‘)
双引号(“)
定界符(<<<)

单引号和双引号的区别

1.
输出内容的不同

  1. <?php
  2. $i='小混蛋';
  3. echo"任远洋$i";
  4. echo"<p>";
  5. echo'$i';
  6. ?>

结果:
任远洋小混蛋
$i

2.
转义字符的使用
例:想输出单引号,使用单引号时,只需对单引号转义即可,
使用双引号时,还需要注意“””、“$”等字符的使用
特殊字符都需要转义符“\”来

转义字符 输出 注释
\n 换行 (LF或ASCII字符0x0A(10))
\r 回车 (CR或ASCII字符0x0D(13))
\t 水平制表符 (HT或ASCII字符0x09(9))
\\ 反斜杠
\$ 美元符号
\‘ 单引号
\‘’ 双引号
\[0-7]{1,3} 此正则表达式序列匹配一个用八进制符号表示的字符 如:\467
\x[0-9A-Fa-f]{1,2} 此正则表达式序列匹配一个用十六进制符号表示的字符 如:\x9f

定界符

后接一个标识符
字符串
同样的标识符结束字符串
例:

  1. <?php
  2. $i='小混蛋';//声明变量$i
  3. echo<<<std
  4. 双引号可以输出\$i使用单引号也可以输出<p>
  5. \$i是个优美的词语:$i
  6. std;
  7. ?>

整型(integer)

只包含整数
整型数可以用十进制、八进制和十六进制

  1. <?php
  2. $str1=14213;//十进制
  3. $str2=0x14213;//
  4. $str3=14213;//
  5. $str4=14213;
  6. echo'数字不同进制的输出结果:<p>';
  7. echo'十进制:'.$str1.'<br>';
  8. echo'十六进制:'.$str2.'<br>';
  9. echo'八进制:';
  10. if($str3==$str4)
  11. {
  12. echo'$str3=$str3='.$str3;
  13. }
  14. else
  15. {
  16. echo'$str3!=$str4=';
  17. }
  18. ?>

结果:
数字不同进制的输出结果:
十进制:54188
十六进制:344456
八进制:1240610

浮点型(float)

可存数字和小数
有两种书写格式

标准格式

3.1415
-35.8

科学计数法格式

3.58E1E1
849.72E-3

  1. <?php
  2. echo'三种方法输出圆周率的值<p>'
  3. echo'第一种:pi()='. pi().'<p>';
  4. echo'第二种:3.14159265359='. 3.14159265359.'<p>';
  5. echo'第三种:314159265359E-11='. 314159265359E-11.'<p>';
  6. ?>

复合数据类型

数组和对象

类型 说明
数组 相同类型变量集合 array
对象 类的实例,使用new命令创建 object

数组

组织一系列的数据
形成可操作的整体
数组中的每一个数据也称一个元素

元素

元素由索引和值组成
索引由数字或字符串组成
值可是多种数据类型

定义数组

语法格式:
$array=array(‘value1,’value2’…)//第一种
$array[key]=’value’//第二种
$array=array(key=>value1,key2=>value2…)//第三种

实例:

  1. $arr1=array('This','is','an','example');
  2. $arr2=array(0=>'php',1=>'is','the'=>'the','str'=>'best');
  3. $arr3[0]='tmpname';

对象

面向过程
面向对象

特殊数据类型

类型 说明
资源 一种特殊变量,保存了到外部资源的一个引用,是通过专门的函数来建立和使用的 也称句柄,resource
空值 特殊的值,表示变量只有一个null的值 null

资源

PHP4引进
使用资源时,系统会自动启用垃圾回收机制,释放不再使用的资源,避免内存消耗

空值

没有为该变量设置任何值
不区分大小写
赋空值的情况:
1.变量还未赋值
2.被赋值null
3.被unset()函数处理过的变量

  1. <?php
  2. $string1=null;//$string1被赋空值
  3. $string3="str";
  4. if(!isset($string1))//判断$string1是否被设置
  5. echo"string1=null<p>";
  6. if(!isset($string2))
  7. echo"string2=null<p>";
  8. unset($string3);
  9. if(!isset($string3))//unset
  10. echo"string3=null<p>";
  11. ?>

结果:string1=null
string2=null
string3=null

数据类型转换

变量前加上用括号括起来的类型名称

转换操作符 转换类型 例子 注释
(boolean) 转换成波尔型 (boolean)$num null、0和未赋值变量或数组变成false,其他的为true
(string) 转换成字符串型 (string)$boo 数字开头的字符串转换成整型或浮点型,把数字部分转换成整型,舍去后面的字符串;如果其中有小数,转换成整型的时候,就舍弃小数,转换成浮点型的不舍弃小数
(integer) 转换成整型 (integer)$boo false转换成0,true转换成1,浮点型的小数部分被省略,数字开头的字符型被截取非数字部分,全字符的输出为0
(float) 转换成浮点型 (float)$str
(array) 转换成数组型 (array)$str
(object) 转换成对象 (object)$str

settype函数实现数据类型转换

形式:bool settype(mixed var,string type)
var是指定变量,type是指定类型,
将指定的变量转换成指定的数据类型,然后返回Boolean型数值
只能转变一个变量

  1. <?php
  2. $num='5.4188renyuanyang';//声明一个字符串变量
  3. echo'变量的值:'.$num;
  4. echo'<p>';
  5. echo(integer)$num;
  6. echo'<p>';
  7. echo settype($num,'integer');
  8. echo'<p>';
  9. echo'变量的值改变为:'.$num;
  10. ?>

检测数据类型

PHP内置检测数据类型的系列函数,如果数据与其类型符合,返回true
不符合,返回false

函数 检测类型 例子
is_bool 检测变量是否为布尔类型 is_bool(true)
is_string 检查变量是否为字符串类型 is_string(‘string’)、is_string(1234)
is_float/is_double 检查变量是否为浮点型 is_float(5.4188)、is_float(‘5.4188’)
is_integer/is_int 检查是否为整数 is_integer(34)、is_integer(‘34’)
is_null 检查变量是否为null is_null(null)
is_array 检查变量是否为数组类型 is_array($arr)
is_object 检查变量是否为一个对象类型 is_object($obj)
is_numeric 检查变量是否为数字或有数字组成的字符串
  1. <?php
  2. $boo="54188";
  3. if(is_numeric($boo))
  4. echo"Yes"
  5. else
  6. echo"Sorry,this is an error!";
  7. ?>

PHP常量

值不变的量

定义变量

常量被定义后,在脚本的其他地方是不能改变的
由英文字母、下画线和数字组成
使用define()函数定义常量
语法格式:define(string constant_name,mixed value)

参数 说明
constant_name 必选参数,常量名称,(标识符)
value 必选参数,常量的值

获取常量

1.使用常量名直接获取值,
2.使用constant()函数

使用constant()函数获取变量

语法格式:mixed constant(string const_name)
其中:const_name是要获取常量的名称,
也可为储存常量名的变量
如果成功,返回常量的值
失败,提示错误信息常量没有被定义

  1. <?php
  2. define("a","我是你爸爸");
  3. echo a."<br>";
  4. define("b","你是我失散多年的儿子");
  5. echo b."<br>";
  6. define("c","任远洋,我的好大儿");
  7. $d=c;
  8. echo constant($d).'<br>';
  9. echo(defined("b"))."<br>";
  10. ?>

预定义常量

常量名 功能
FILE 默认常量,PHP程序文件名
LINE 默认常量,PHP程序行数
PHP_VERSION 内建常量,PHP程序的版本,如php.6.0.0-dev
PHP_OS 内建常量,执行PHP解析器的操作系统名称,如Windows
TRUE 该常量是一个真值(true)
FALSE 该常量是一个假值(false)
NULL 一个null值
E_ERROR 该常量指向最近的错误处
E_WARNING 该常量指向最近的警告处
E_PARSE 该常量指向解析语法有潜在问题处
E_NOTICE 该常量为发生不寻常处的提示但不一定是错误处
  1. <?php
  2. echo"这个文件的路径:".__FILE__.'<br>';
  3. echo"这个文件有".__LINE__."行".'<br>';
  4. echo"当前PHP的版本为:".PHP_VERSION.'<br>';
  5. echo"当前操作系统为:".PHP_OS;
  6. ?>

PHP变量

程序执行的过程中数值可以变化的量
通过一个变量名来标识
借助变量名可访问内存中的数据

变量的声明及使用

PHP中使用变量不需要声明变量
直接给变量赋值
变量名用$和标识符表示
标识符由字母、数字或下画线组成

直接赋值

  1. <?php
  2. $name='任远洋';
  3. echo"我的儿子:".$name;
  4. ?>

错误命名

  1. <?php
  2. $54188_wodehaodaer="任远洋";
  3. $@renyuanyang="我的儿子";
  4. ?>

变量间的赋值

赋值后的两个变量使用各自的内存
互不干扰

  1. <?php
  2. $string1="任远洋是我的好大儿";
  3. $string2="任远洋是我的好闺女";
  4. $string1=$string2;
  5. $string1="任远洋是我的好孙子";
  6. echo"$string2";
  7. ?>

引用赋值

使用$符号表示引用

  1. <?php
  2. $a="任远洋在厕所吃饭";
  3. $b=&$a;
  4. $b="任远洋吃屎";
  5. echo"$b".'<br>';
  6. echo"$a";
  7. ?>

注:引用与复制的区别:
引用相当于起了个别名
赋值相当于把原内容复制,开辟一个新内存空间保存

变量作用域

作用域 说明
局部变量 在函数内部定义的变量,仅在所在函数中有意义
全局变量 定义在所有函数外,在整个PHP文件中有意义,在用户自定义的函数中需要使用global关键词声明方可使用
静态变量 函数调用结束后保留变量值,需要使用static声明变量
  1. <?php
  2. $a="全局变量";
  3. function example()
  4. {
  5. $a="局部变量";
  6. echo"$a".'<br>';
  7. }
  8. example();
  9. echo "$a";//等同于echo$a;
  10. ?>

静态变量在很多地方能用到
记录浏览空间的人数,
记录用户的聊天记录等

  1. <?php
  2. function hanshu1()
  3. {
  4. static $a=0;
  5. $a+=1;
  6. echo $a." ";
  7. }
  8. function hanshu2()
  9. {
  10. $a=0;
  11. $a+=1;
  12. echo $a." ";
  13. }
  14. for($b=0;$b<10;$b++) hanshu1();
  15. echo'<br>';
  16. for($b=0;$b<10;$b++) hanshu2();
  17. echo'<br>';
  18. ?>

可变变量

可以动态改变变量的名称
该变量的名称由另一个变量的值确定
在变量前多加一个美元符号“$”

  1. <?php
  2. $a="b";
  3. $b="吴晓辉我的好大儿";
  4. $c="a";
  5. echo $b.'<br>';
  6. echo $$a.'<br>';
  7. echo $$$c.'<br>';
  8. ?>

PHP预定义变量

可以获取用户会话
操作系统的环境和本地操作系统的环境等信息

变量的名称 说明 注释
$_SERVER[‘SERVER_ADDR’] 当前运行脚本所在的服务器的IP地址
$_SERVER[‘SERVER_NAME’] 当前运行脚本所在服务器主机的名称 如果在虚拟机上,则是虚拟主机所设置的值
$_SERVER[‘REMOTE_METHOD’] 访问页面时的请求方法 如:GET、HEAD、POST、PUT等,如果是HEAD,脚本在送出头信息后中止即在产生任何输出后,不再有输出缓冲。
$_SERVER[‘REMOTE_ADDR’] 正在浏览当前页面用户的IP地址
$_SERVER[‘REMOTE_HOST’] 正在浏览当前页面用户的主机名 反向域名解析基于该用户的REMOTE_ADDR
$_SERVER[‘REMOTE_PORT’] 用户连接到服务器时所使用的端口
$_SERVER[‘SCRIPT_FILENAME’] 当前执行脚本的绝对路径名 脚本在CLI中被执行,该变量将包含用户指定的相对路径
$_SERVER[‘SERVER_PORT’] 服务器所使用的端口,默认80 如果使用SSL连接,这个是为用户设置的HTTP端口
$_SERVER[‘SERVER_SIGNATURE’] 包含服务器版本和虚拟主机名的字符串
$_SERVER[‘DOCUMENT_ROOT’] 当前运行脚本所在的文档根目录 在服务器配置文件中定义
$_COOKIE 通过HTTPCookie传递到脚本的信息 cookie多数时通过setcookie()函数设置
_SESSION 包含与所有会话变量有关的信息 $_SESSION变量主要用于会话控制和页面之间值的传递
$_POST 包含通过POST方法传递的参数的相关信息 主要用于获取通过POST方法提交的数据
$_GET 包含通过GET方法传递的参数的相关信息 主要用于获取通过GET方法提交的数据
$GLOBALS 由所有已定义全局变量组成的数组 变量名就是索引。该变量是所有超级变量的超级集合

PHP运算符

对象是变量、常量或数据
主要包括算数运算符、
字符串运算符、
赋值运算符、
位运算符、
逻辑运算符、
比较运算符、
递增或递减运算符
条件运算符

算术运算符

字符串运算符

只有一个:”.”

赋值运算符

注:

操作 符号 意义
/= 左边的值除以右边的值
连接字符 .= 将右边的字符加到左边
取余数 %= 将左边的值对右边取余数

递增或递减运算符

位运算符

对二进制从地位到高位对齐后进行运算

符号 作用
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 向左移位
>> 向右移位
  1. <?php
  2. $m=8;
  3. $n=12;
  4. $mn=$m&$n;
  5. echo $mn.' ';
  6. $mn=$m|$n;
  7. echo $mn.' ';
  8. $mn=$m^ $n;
  9. echo $mn.' ';
  10. $mn=~ $m;
  11. echo $mn.' ';
  12. ?>

逻辑运算符

运算符 结果为真
&&或and(与) 当两个都为真的时候为真
||或or(或) 一个为真即可
xor(异或) 两个符合一真一假

注:&&、||与其他的逻辑运算符为同级,都比and和or的优先级高

比较运算符

运算符 说明
=== 恒等于
!== 非恒等于
  1. <?php
  2. $a=100;
  3. var_dump($a==true);//boolean true
  4. var_dump($a===true);//boolean true
  5. var_dump($a===100);//boolean false
  6. var_dump(10/2.0!==5);//boolean true

条件运算符

?:
三目运算符
根据一个表达式决定选择另外两个表达式中的哪一个
最好放在括号中使用

  1. <?php
  2. $a=100;
  3. echo($a==true)?"任远洋大傻逼":"吴晓辉大傻逼";//结果是任远洋大傻逼
  4. ?>

运算符的优先性

多使用括号

PHP的表达式

使用”;”来区分表达式

PHP函数

定义和调用函数

定义函数

  1. function fun_name($str1,$str2,...,$strn)
  2. {
  3. fun_body;
  4. }

其中:function为声明自定义函数时必须使用的关键字
fun_name是自定义函数的名称
$str1,$str2,…,$strn是函数的参数

调用函数

引用函数名
赋值正确类型的参数

在函数之间传参

按值传递
按引用传递
默认参数

按值传递

  1. <?php
  2. function jiafa($m)
  3. {
  4. $m=$m*5+10;
  5. echo"定义函数里的结果:".$m;
  6. }
  7. $m=54188;
  8. jiafa(5418);
  9. jiafa(54188);
  10. jiafa($m);
  11. ?>

按引用传递

  1. <?php
  2. function jiafa(&$a)
  3. {
  4. $m=$m*5+10;
  5. echo"函数内的结果".$m;
  6. }
  7. $m=54188;
  8. jiafa($m);
  9. ?>

默认参数方式

指定某个参数为可选参数,
把可选参数放在参数列末尾
给它一个默认值

  1. <?php
  2. function jiafa($m,$n=0)
  3. {
  4. $m=$n+($m+$n);
  5. echo"\$m运算后=$m<p>";
  6. }
  7. jiafa(54188,54199);
  8. jiafa(54188);
  9. ?>

结果:
m 运算后=162586
m 运算后=54188

从函数中返回值

使用return
return只能返回一个参数,如果要返回多个结果,就需要在函数中定义一个数组
将返回值储存在数组中返回

变量函数

通过改变变量名,并在变量名后加上一对小括号来实现函数调用

  1. <?php
  2. function yi()
  3. {
  4. echo"好大儿是任远洋<br>";
  5. }
  6. function er($a="吴晓辉")
  7. {
  8. echo"好大儿是$a<br>";
  9. }
  10. function san($b)
  11. {
  12. echo"$b,都是好大儿<br>";
  13. }
  14. $a="yi";
  15. $a();
  16. $a="er";
  17. $a("任远洋");
  18. $a="san";
  19. $a("他们两个");
  20. ?>

PHP编码规范

缩进

4个空格左右

大括号

大括号放在关键字的下方

关键字、小括号、函数、运算符

小括号与关键字之间有空格
小括号与函数紧贴
运算符与两边变量或表达式之间有一个空格
代码段大的时候,两个代码块之间使用一个空行
不要在return返回语句中使用小括号

PHP命名规则

类命名

使用大写字母作为词的分隔
名字首字母大写
不要使用_

类属性命名

以m为前缀
前缀m后采用与类命名一致的规则
m在名字开头起修饰作用,就像以r开头表示引用一样

方法命名

一般名称前缀和后缀有一定规律,如:Is(判断)、Get(得到)、Set(设置)

  1. class StartStudy
  2. {
  3. $mLessonOne=" ";
  4. function GetLessonOne()
  5. {
  6. }
  7. }

方法中参数的命名

第一个字符使用小写字母
在首字符后的所有字符按类命名规则首字符大写

变量命名

所有字母小写
使用_作为词的分界

引用变量

有r前缀

  1. class Example
  2. {
  3. $mExam = " ";
  4. function SetExam(&$rExam)
  5. {
  6. }
  7. function &rGetExam()
  8. {
  9. }
  10. }

全局变量

前缀为g

常量/全局变量

全部大写
单词之间使用”_”来分隔

静态变量

前缀是s

函数命名

全部小写
多个单词之间用”_”分隔