php的标签风格
XML风格
<?phpecho"XML风格";?>
脚本风格
<script language ="php">echo'脚本风格';</script>
简短风格
<?echo'简短风格';?>
ASP风格
<%echo'ASP风格';%>
PHP注释
对代码的说明
一般放在代码的上方或尾部
不影响代码的执行
单行注释
上方单行注释
<?php
//上方单行注释
echo’c++风格注释’;
?>
后方单行注释
<?php
echo’c++风格注释’;//后方单行注释
?>
<?phpecho'看到了'//?>没有看到?>
多行注释
块注释
<?php/*$a=1;$b=2;echo($a+$b);*/echo'多行注释';?>
文档注释
<?php/*说明:项目工具类*作者:单飞阳*Email:2695494301@qq.com*/class Util{/*** 方法说明:给字符串加前缀*参数: String $str*返回值: String*/function addPrefix($str){$str.='mingri';return $str;}}?>
风格的注释
例:
<?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赋值给变量即可
布尔型变量通常出现在条件或循环语句的表达式中
例:
<?php$boo=true;//声明一个boolean类型变量,赋初值trueif($boo==true)echo'$boo为真';elseecho'$boo为假';?>
结果:$boo为真
字符串型(string)
连续的字符序列(可为数字,字母和符号)
每个字符只占用一个字节
3种定义字符串的方式
单引号(‘)
双引号(“)
定界符(<<<)
单引号和双引号的区别
1.
输出内容的不同
<?php$i='小混蛋';echo"任远洋$i";echo"<p>";echo'$i';?>
结果:
任远洋小混蛋
$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 |
定界符
后接一个标识符
字符串
同样的标识符结束字符串
例:
<?php$i='小混蛋';//声明变量$iecho<<<std双引号可以输出\$i使用单引号也可以输出<p>\$i是个优美的词语:$istd;?>
整型(integer)
只包含整数
整型数可以用十进制、八进制和十六进制
<?php$str1=14213;//十进制$str2=0x14213;//$str3=14213;//$str4=14213;echo'数字不同进制的输出结果:<p>';echo'十进制:'.$str1.'<br>';echo'十六进制:'.$str2.'<br>';echo'八进制:';if($str3==$str4){echo'$str3=$str3='.$str3;}else{echo'$str3!=$str4=';}?>
结果:
数字不同进制的输出结果:
十进制:54188
十六进制:344456
八进制:1240610
浮点型(float)
标准格式
科学计数法格式
3.58E1E1
849.72E-3
<?phpecho'三种方法输出圆周率的值<p>'echo'第一种:pi()='. pi().'<p>';echo'第二种:3.14159265359='. 3.14159265359.'<p>';echo'第三种:314159265359E-11='. 314159265359E-11.'<p>';?>
复合数据类型
数组和对象
| 类型 | 说明 | |
|---|---|---|
| 数组 | 相同类型变量集合 | array |
| 对象 | 类的实例,使用new命令创建 | object |
数组
组织一系列的数据
形成可操作的整体
数组中的每一个数据也称一个元素
元素
元素由索引和值组成
索引由数字或字符串组成
值可是多种数据类型
定义数组
语法格式:
$array=array(‘value1,’value2’…)//第一种
$array[key]=’value’//第二种
$array=array(key=>value1,key2=>value2…)//第三种
实例:
$arr1=array('This','is','an','example');$arr2=array(0=>'php',1=>'is','the'=>'the','str'=>'best');$arr3[0]='tmpname';
对象
特殊数据类型
| 类型 | 说明 | |
|---|---|---|
| 资源 | 一种特殊变量,保存了到外部资源的一个引用,是通过专门的函数来建立和使用的 | 也称句柄,resource |
| 空值 | 特殊的值,表示变量只有一个null的值 | null |
资源
PHP4引进
使用资源时,系统会自动启用垃圾回收机制,释放不再使用的资源,避免内存消耗
空值
没有为该变量设置任何值
不区分大小写
赋空值的情况:
1.变量还未赋值
2.被赋值null
3.被unset()函数处理过的变量
<?php$string1=null;//$string1被赋空值$string3="str";if(!isset($string1))//判断$string1是否被设置echo"string1=null<p>";if(!isset($string2))echo"string2=null<p>";unset($string3);if(!isset($string3))//unsetecho"string3=null<p>";?>
结果: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型数值
只能转变一个变量
<?php$num='5.4188renyuanyang';//声明一个字符串变量echo'变量的值:'.$num;echo'<p>';echo(integer)$num;echo'<p>';echo settype($num,'integer');echo'<p>';echo'变量的值改变为:'.$num;?>
检测数据类型
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 | 检查变量是否为数字或有数字组成的字符串 |
<?php$boo="54188";if(is_numeric($boo))echo"Yes"elseecho"Sorry,this is an error!";?>
PHP常量
定义变量
常量被定义后,在脚本的其他地方是不能改变的
由英文字母、下画线和数字组成
使用define()函数定义常量
语法格式:define(string constant_name,mixed value)
| 参数 | 说明 |
|---|---|
| constant_name | 必选参数,常量名称,(标识符) |
| value | 必选参数,常量的值 |
获取常量
1.使用常量名直接获取值,
2.使用constant()函数
使用constant()函数获取变量
语法格式:mixed constant(string const_name)
其中:const_name是要获取常量的名称,
也可为储存常量名的变量
如果成功,返回常量的值
失败,提示错误信息常量没有被定义
<?phpdefine("a","我是你爸爸");echo a."<br>";define("b","你是我失散多年的儿子");echo b."<br>";define("c","任远洋,我的好大儿");$d=c;echo constant($d).'<br>';echo(defined("b"))."<br>";?>
预定义常量
| 常量名 | 功能 |
|---|---|
| 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 | 该常量为发生不寻常处的提示但不一定是错误处 |
<?phpecho"这个文件的路径:".__FILE__.'<br>';echo"这个文件有".__LINE__."行".'<br>';echo"当前PHP的版本为:".PHP_VERSION.'<br>';echo"当前操作系统为:".PHP_OS;?>
PHP变量
程序执行的过程中数值可以变化的量
通过一个变量名来标识
借助变量名可访问内存中的数据
变量的声明及使用
PHP中使用变量不需要声明变量
直接给变量赋值
变量名用$和标识符表示
标识符由字母、数字或下画线组成
直接赋值
<?php$name='任远洋';echo"我的儿子:".$name;?>
错误命名
<?php$54188_wodehaodaer="任远洋";$@renyuanyang="我的儿子";?>
变量间的赋值
赋值后的两个变量使用各自的内存
互不干扰
<?php$string1="任远洋是我的好大儿";$string2="任远洋是我的好闺女";$string1=$string2;$string1="任远洋是我的好孙子";echo"$string2";?>
引用赋值
使用$符号表示引用
<?php$a="任远洋在厕所吃饭";$b=&$a;$b="任远洋吃屎";echo"$b".'<br>';echo"$a";?>
注:引用与复制的区别:
引用相当于起了个别名
赋值相当于把原内容复制,开辟一个新内存空间保存
变量作用域
| 作用域 | 说明 |
|---|---|
| 局部变量 | 在函数内部定义的变量,仅在所在函数中有意义 |
| 全局变量 | 定义在所有函数外,在整个PHP文件中有意义,在用户自定义的函数中需要使用global关键词声明方可使用 |
| 静态变量 | 函数调用结束后保留变量值,需要使用static声明变量 |
<?php$a="全局变量";function example(){$a="局部变量";echo"$a".'<br>';}example();echo "$a";//等同于echo$a;?>
静态变量在很多地方能用到
记录浏览空间的人数,
记录用户的聊天记录等
<?phpfunction hanshu1(){static $a=0;$a+=1;echo $a." ";}function hanshu2(){$a=0;$a+=1;echo $a." ";}for($b=0;$b<10;$b++) hanshu1();echo'<br>';for($b=0;$b<10;$b++) hanshu2();echo'<br>';?>
可变变量
可以动态改变变量的名称
该变量的名称由另一个变量的值确定
在变量前多加一个美元符号“$”
<?php$a="b";$b="吴晓辉我的好大儿";$c="a";echo $b.'<br>';echo $$a.'<br>';echo $$$c.'<br>';?>
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运算符
对象是变量、常量或数据
主要包括算数运算符、
字符串运算符、
赋值运算符、
位运算符、
逻辑运算符、
比较运算符、
递增或递减运算符
条件运算符
算术运算符
字符串运算符
赋值运算符
注:
| 操作 | 符号 | 意义 |
|---|---|---|
| 除 | /= | 左边的值除以右边的值 |
| 连接字符 | .= | 将右边的字符加到左边 |
| 取余数 | %= | 将左边的值对右边取余数 |
递增或递减运算符
位运算符
对二进制从地位到高位对齐后进行运算
| 符号 | 作用 |
|---|---|
| & | 按位与 |
| | | 按位或 |
| ^ | 按位异或 |
| ~ | 按位取反 |
| << | 向左移位 |
| >> | 向右移位 |
<?php$m=8;$n=12;$mn=$m&$n;echo $mn.' ';$mn=$m|$n;echo $mn.' ';$mn=$m^ $n;echo $mn.' ';$mn=~ $m;echo $mn.' ';?>
逻辑运算符
| 运算符 | 结果为真 |
|---|---|
| &&或and(与) | 当两个都为真的时候为真 |
| ||或or(或) | 一个为真即可 |
| xor(异或) | 两个符合一真一假 |
注:&&、||与其他的逻辑运算符为同级,都比and和or的优先级高
比较运算符
| 运算符 | 说明 |
|---|---|
| === | 恒等于 |
| !== | 非恒等于 |
<?php$a=100;var_dump($a==true);//boolean truevar_dump($a===true);//boolean truevar_dump($a===100);//boolean falsevar_dump(10/2.0!==5);//boolean true
条件运算符
?:
三目运算符
根据一个表达式决定选择另外两个表达式中的哪一个
最好放在括号中使用
<?php$a=100;echo($a==true)?"任远洋大傻逼":"吴晓辉大傻逼";//结果是任远洋大傻逼?>
运算符的优先性
PHP的表达式
PHP函数
定义和调用函数
定义函数
function fun_name($str1,$str2,...,$strn){fun_body;}
其中:function为声明自定义函数时必须使用的关键字
fun_name是自定义函数的名称
$str1,$str2,…,$strn是函数的参数
调用函数
在函数之间传参
按值传递
<?phpfunction jiafa($m){$m=$m*5+10;echo"定义函数里的结果:".$m;}$m=54188;jiafa(5418);jiafa(54188);jiafa($m);?>
按引用传递
<?phpfunction jiafa(&$a){$m=$m*5+10;echo"函数内的结果".$m;}$m=54188;jiafa($m);?>
默认参数方式
指定某个参数为可选参数,
把可选参数放在参数列末尾
给它一个默认值
<?phpfunction jiafa($m,$n=0){$m=$n+($m+$n);echo"\$m运算后=$m<p>";}jiafa(54188,54199);jiafa(54188);?>
结果:
m 运算后=162586
m 运算后=54188
从函数中返回值
使用return
return只能返回一个参数,如果要返回多个结果,就需要在函数中定义一个数组
将返回值储存在数组中返回
变量函数
通过改变变量名,并在变量名后加上一对小括号来实现函数调用
<?phpfunction yi(){echo"好大儿是任远洋<br>";}function er($a="吴晓辉"){echo"好大儿是$a<br>";}function san($b){echo"$b,都是好大儿<br>";}$a="yi";$a();$a="er";$a("任远洋");$a="san";$a("他们两个");?>
PHP编码规范
缩进
大括号
关键字、小括号、函数、运算符
小括号与关键字之间有空格
小括号与函数紧贴
运算符与两边变量或表达式之间有一个空格
代码段大的时候,两个代码块之间使用一个空行
不要在return返回语句中使用小括号
PHP命名规则
类命名
类属性命名
以m为前缀
前缀m后采用与类命名一致的规则
m在名字开头起修饰作用,就像以r开头表示引用一样
方法命名
一般名称前缀和后缀有一定规律,如:Is(判断)、Get(得到)、Set(设置)
class StartStudy{$mLessonOne=" ";function GetLessonOne(){}}
方法中参数的命名
第一个字符使用小写字母
在首字符后的所有字符按类命名规则首字符大写
变量命名
引用变量
有r前缀
class Example{$mExam = " ";function SetExam(&$rExam){}function &rGetExam(){}}
全局变量
常量/全局变量
静态变量
函数命名
全部小写
多个单词之间用”_”分隔
