重点概括
【1】.数据类型
【2】.运算符
【3】.流程控制
【4】.自定义函数以及内部函数
【5】.正则表达式
【6】.文件及目录
【7】.会话控制技术
【8】.面向对象
【9】.网络协议
-
一.PHP数据类型
三大数据类型(标量,复合,特殊)
在PHP中,一共支持八种原始数据类型:它们是4种标量类型,boolean(布尔型),integer(整型),float(浮点型)和string(字符串型);两种符合类型,array(数组)和object(对象);两种特殊类型,resource(资源)与空值(null)
字符串的定义方式
1.单引号
要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。要表达一个反斜线自身,则用两个反斜线(\)。其它任何方式的反斜线都会被当成反斜线本身:也就是说如果想使用其它转义序列例如 \r 或者 \n,并不代表任何特殊含义,就单纯是这两个字符本身。2.双引号
用双引号定义的字符串最重要的特征是变量会被解析,详见变量解析。3.heredoc和newdoc
heredoc 类似于双引号
newdoc 类似于单引号
两者都是用来处理大文本
代码
header("Content-type: text/html; charset=utf-8");
$var = 'PHP变量';
$vara = 'PHP变量555555';
echo <<<'aaa'
<div>
PHP heredoc技术
<br />
$var
$vara
</div>
aaa;
echo <<<zhangshan
<hr />
<div>
PHP heredoc技术
<br />
$var
</div>
zhangshan;
代码实现区别 变量加引号和不加引号。
数据类型
标量:
1.浮点类型
浮点类型不能用于比较计算的判断(原因 计算机计算基于二进制,有精度缺失)
例子:0.1+0.7==0.7999!=0.8
2.布尔类型(7种)
0,0.0,'',false,array(),NULL
3.数组类型
超全局数组
$GLOBALS,$_GET,$_POST,$_REQUEST,$_SESSION,$_COOKIE,$_SERVER,$_FILES,$_ENV
$_SERVER
1.记录请求的结果码
2.记录请求过来的必要信息(请求ip 来源地址 请求时间,请求方式,来源地址解析等)
3.记录服务器的配置信息(域名路径,环境配置信息,执行路径,执行文件路径等)
php引用变量
定义:
php引用变量:不同变量名指向同一地址。 符号&
本质:
多个变量共用一个内存空间。(memory_get_usage内存空间使用情况查看函数,xdebug_debug_zval查看变量的情况)
直接变量之间的赋值在赋值变量改变的时候将会开辟新的内存空间。(一般的变量赋值给另外一个变量,内存空间还是共用,但是在赋值变量改变的时候,PHP将会开辟新的内存空间保存不同的值)
注意:
unset其中一个引用变量不影响其他变量。
其中一个引用变量重新赋值,其他的变量值发生改变,其中一个变量如果是引用变量指向另外地址空间,则跳出和之前变量的共用空间,独立开辟新空间。
程序图解分析:
data 值为array(b,c,c);
总结:多个变量之间共用空间通过&地址符赋值,单个变量通过unset变量取消引用或者通过地址符&重新赋值新地址,跳出和其他变量的共用空间。共用空间内的所有引用变量,其中一个变量改变其他变量值也会改变。
- 二.运算符
@为屏蔽表达式发生全部错误信息运算符
- 三.流程控制
PHP遍历数组的三种方式
1.for
2.foreach
3.list while each
reset() reset — 将数组的内部指针指向第一个单元
PHP分支语句
1.If else:
2.Switch case
Switch case 不同的值直接存放在索引数组里面 效率高于if分支。属于精确查询。代码如下
switch (n)
{
case label1:
如果 n=label1,此处代码将执行;
break;
case label2:
如果 n=label2,此处代码将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
- 四.自定义函数以及内部函数
不能直接把全局变量直接用到局部。需要设置全局可以如下:
静态变量
解释:常作为递归的判断方式。
$a $b 互为引用
外部文件引入:
综合考察函数
- 五.正则表达式
- 六.文件及目录
文件前面追加字符串思路
- 七.php会话控制技术
具体可以参考文章(https://www.jianshu.com/p/7ec08ec8ba36)
(https://www.cnblogs.com/wswang/p/6062461.html)
- 八.面向对象
文章(https://www.imooc.com/article/23924)
方法重写
文章参考(https://www.cnblogs.com/giantpanda/archive/2012/11/07/2759458.html)
构造函数
构造函数可以接受参数,能够在创建对象时赋值给对象属性
构造函数可以调用类方法或其他函数
构造函数可以调用其他类的构造函数
析构函数
析构函数是在销毁对象时,自动调用,不能显示的调用。
析构函数不能带参数。
在以下几种情况下可能会调用析构函数(但不一定):
PHP页面加载完毕之后;
unset()类;
变量引用指向别的对象或值时;
PHP的内存回收机制和JAVA的很类似,对没有任何引用的对象进行销毁回收,采用引用计数器的技术。
// 构造函数
function __construct([argument1,argument2,...,argumentN]){
/ Class initialization code /
}
// 析构函数
function __destruct(){
// ...
}
- 九.网络协议