持续更新中~~~~
通俗易懂的表格汇总,带你快速理解两者(或多者)的区别关系
isset:检测变量是否已设置并且非 NULL
empty:判断变量是否为空,变量为 0/false 也会被认为是空;变量不存在,不会产生警告
变量的值($var)
isset($var)
empty($var)
""(空字符串)
布尔(true)
布尔(true)
" "(空格字符)
布尔(true)
布尔(false)
false
布尔(true)
布尔(true)
true
布尔(true)
布尔(false)
array()(一个空数组)
布尔(true)
布尔(true)
NUll值
布尔(false)
布尔(true)
“0”(0作为字符串)
布尔(true)
布尔(true)
0(0为整数)
布尔(true)
布尔(true)
0.0(0作为浮点数)
布尔(true)
布尔(true)
public、protected、private(3p修饰符)
在类外
在子类
在本类
public(公有)
✔
✔
✔
protected(受保护)
✖
✔
✔
private(私有)
✖
✖
✔
cookie
session
存储
客户端(浏览器)
服务器端
安全
容易被更改
安全一些
性能
减轻服务器的性能
占用服务器的性能
Session 的运行依赖Session ID,而 Session ID 是存在 Cookie 中的,也就是说,如果浏览器禁用了 Cookie,Session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 Session ID)
请求方式
get
post
本质
向服务器发索取数据的一种请求
向服务器提交数据的一种请求
服务器端获取值的方法
$_GET
$_POST
安全性
低
较安全
大小
URL 的最大长度是 2048 个字符
没有大小限制
echo、print、print_r、var_dump
echo
print
print_r
var_dump
语言结构
语言结构
普通函数
普通函数
输出一个或多个字符串
输出字符串
打印关于变量的易于理解的信息
打印关于变量的易于理解的信息(带类型)
缓存
Redis
Memcached
数据支持类型
常用的数据类型有5种:String、Hash、List、Set和ZSet
仅支持简单的key-value结构
线程
单线程的IO复用模型
多线程,非阻塞IO复用的网络模型
是否支持事务
✔
✖
持久化
✔
✖
web服务器
Nginx
Apache
反向代理
非常好
好
Rewrite规则
非常好
好
FstCGI
好
差
热部署
✔
✖
系统压力比较
很小
小
稳定性
非常好
好
安全性
一般
好
静态文件处理
非常好
一般
虚拟主机
✔
✔
内存消耗
非常小
很大
函数
对空格的处理
返回值
urlencode
处理成“+”
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 » RFC3986 编码(参见 rawurlencode())不同
rawurlencode
处理成“%20”
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 » RFC 3986 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱
函数
urlencode
rawurlencode
返回值
对空格的处理
处理成“+”
处理成“%20”
include、require、include_once、require_once
处理失败方式
include
只产生一个警告级别错误,程序继续运行
require
会产生一个致命级别错误,并停止程序运行
include_once
同include,当所包含的文件代码已经存在时候,不在包含
require_once
同require,当所包含的文件代码已经存在时候,不在包含
存储引擎
MyISAM
InnoDB
默认引擎
需要指定
场景
适合查询以及插入为主的应用
适合频繁修改以及涉及到安全性较高的应用
是否支持FULLTEXT类型的索引
✔
✖
是否支持事务
✖
✔
是否支持外键
✖
✔
表的具体行数
select count() from table,MyISAM只要简单的读出保存好的行数,注意的是,当count( )语句包含 where条件时,两种表的操作是一样的
InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行
锁
表锁
行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%')
清空整个表时
重新建表
一行一行的删除
数据类型
varchar
char
解释
变长
定长
定义长度
小于定义长度时,还是按实际长度存储,插入多长就存多长
如果插入的长度小于定义长度时,则用空格填充
存储的容量
最多能存放 65532 个字符。varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节。
最多能存放的字符个数 255,和编码无关