一、php语法
PHP是一种嵌入式脚本语言,所以,我们需要标记出哪些是PHP代码,哪些是html代码。当html和php代码进行混编的时候,文件必须要以php结尾(否则Apache不会将这个文件交给php处理,直接作出响应),但是PHP引擎也只是选择性的进行处理,它只处理PHP代码的那一部分。
php标记:1、<?php ?> 2、<script language=”php”></script> 3、<? ?>和4、<% %>(在php.ini中配置short_open_tag = On和asp_tags=On)
php注释:在php标签内生效,有//、#和/* */,但是html的注释符不能用来注释php语句,仍能执行php语句,只是浏览器不显示而已。在PHP项目中,比较常用的是一个注释规范是PHPDocumentor的一种风格,PHPDocumentor可以自动提取一个PHP文档中的所有的注释内容,注释规范如下:
函数一般采用块注释:
/**
*函数的功能
*@param 参数类型 参数名1 参数解释
*@param 参数类型 参数名2 参数解释
*@return 返回值类型 返回值解释
*@author
*修改时间
*/
二、常见的输出语句
1、print 输出字符串、表达式、变量等单项的值,不能输出数组、对象等复杂的数组类型
2、echo 可以输出多个简单数据,以逗号分隔(也可以用字符串连接符"."来连接输出的字符,但直接输出以逗号分隔的多个字符串效率更高)
3、var_dump( ) 测试代码时使用最多的语句,多个数据以逗号分隔,输出的内容最全面
4、print_r( ) 一般用来打印数组等复杂类型的,只打印数组里面的值,较var_dump简洁
5、printf( ) 比较擅长输出静态文本和其他变量所组成的“混合产物” printf(“%s %d %s”,$str1,$str2,$str3) printf的最大优势是可以控制输出变量的格式!
三、变量
1、脚本周期:从apache将请求交给php处理开始,到PHP处理结束后将结果返回给apache为止。
2、可变变量:变量的名字可变,在有些时候,需要对变量的名字进行拼凑,使之成为一个新变量,常见于for循环中:$v='v'.$i,$sum+=$$v
3、预定义变量:$GLOBALS将全局变量变为超全局变量("同生共死")、$_GET、$_POST、$_REGUEST、$_COOKIE、$_SERVER(服务器收集到的浏览器信息和服务器信息的一个数组集合)等等
四、常量
1、在一个脚本周期内,其值不会发生改变的量,一旦定义,就不能被修改或删除。常量的作用域是全局的。常量名默认不区分大小写,为了与变量进行区分,统一大写。
2、定义常量:define(‘常量名’,常量值,是否不区分大小写) const 常量名=常量值
3、判断常量是否存在:defined(‘常量名’),返回一个布尔值;获取常量的值(常用于获取特殊的常量名的值,比如"^_^"),constant(‘常量名’);
4、预定义常量
get_defined_constants( )可以当前自定义常量和系统预定义常量。
魔术常量:其值,由代码所在的位置决定。常量名以__开始,以__结束。如:__FILE__、__DIR__等
五、数据类型
三大类:标量类型(简单类型)、复合类型和特殊类型
八小类:整型(4字节)、浮点型(双精度、8字节、有效位14位)、布尔型、字符串型(utf-8下的汉字占3个字节)、数组、对象、空类型(NULL)、资源型
定义字符串:
单引号定义:不能解析变量,只能转义单引号和转义字符""; 效率较双引号高一些
双引号定义:能解析变量,最好用定界符{}包裹;可以转义多种字符,如:" 换行"、" 回车"、"$"等;
定界符(Heredoc):开始与结束标记单独占一行。类似于双引号
<<<开始标记
//字符串内容
结束标记;
定界符(Nowdoc):类似于单引号
<<<’ 开始标记 ’
//字符串内容
结束标记
常见的,定界符适用于定义html代码或者js代码。也就是把这些代码以字符串的形式保存到一个变量中,需要的时候输出该字符串,浏览器就可以解析该段代码了!
类型强制转换:(目标类型)原始数据,如:(Int)5.2
无论是自动转换还是强制转换,只是临时生成了一个数据拿来使用,不影响原有数据的值和类型!
1、无法将一个数据强制转换为null型和资源型
2、对于(array)是将后面的数据项强制转换为该数组的第一个元素,但是,这种并不是增加数组元素的一种语法,因为先将原数组清空,再把后面的数据转换为当前数组的
第一个元素
3、对于(object),其实就是将后面的数据转换为该对象的一个属性
六、类型相关的函数
1、函数的原型:函数返回值类型 函数名(参数1类型 参数1,参数2类型 参数2……)
1)任何一个函数,都要考虑它是否有返回值以及该返回值的类型,如果该函数没有返回值,就用void来表示;
2)如果函数参数的类型或者函数返回值的类型有很多个,就用mixed来代替,意思就是混合类型,也叫作“伪类型”。
2、string gettype (mixed $var) 返回一个数据项(变量或常量或表达式)的类型
3、bool settype (mixed &$var , string $type) 将变量var的类型设置成type,如果转换成功,就返回true,如果转换失败,就返回false,转换改变了原数据
4、bool isset (mixed $var , ……) 检测变量是否存在,存在返回true,不存在返回false,还可以用来判断一个数组的某个元素是否存在,以及对象的属性是否存在
变量不存在的几种情况:1)变量未被声明;2)变量被删除;3)变量的值为NULL
5、bool empty (mixed $var) 判断一个变量是否为空,如果为空就返回true,如果不为空就返回false
变量为空的判断依据如下(有两种情况):
1)该变量根本就不存在,也就是用isset的结果为false
2)该变量存在,但是(boolean)$var强制转换该变量为false
6、is_numeric 判断是否是一个数值类型,等于is_int + in_float,如果一个字符串是一个数字字符串(里面全部为数字),也当成是一个数值型数据来处理
7、is_scalar 判断是否为标量数据类型
七、运算符
算术运算符、赋值运算符、字符串运算符、关系运算符(比较运算符)、逻辑运算符、条件运算符(三目运算符)、位运算符、其他运算符
注意几点:
任何一个表达式都要返回一个值!
逻辑异或xor:一真一假就为真,其余为假!
<<n:按位左移,将整个字节向左移动,右边用0填充;相当于原数值*2^n
>>n:按位右移,将整个字节向右移动,如果是正数,左边补0,如果是负数,左边补1
其他运算符:
面向对象的时候,new是实例化一个对象,clone是克隆一个对象
@:错误抑制符,作用是抑制系统错误信息,然后我们再返回给用户友好的提示信息
instanceof:判断一个对象是否为一个类的实例(参数1是一个对象变量,参数2是一个类)
八、流程控制
(参照我前面的随笔——《分支结构和循环语句》,此处略)