《我的憨憨女友都能看懂学会的PHP区别表格合集》


通俗易懂的表格汇总,带你快速理解两者(或多者)的区别关系

持续更新~~~,如有遗漏可以评论区告诉我~
在这里插入图片描述

区别表格汇总

isset 和 empty

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
本质 向服务器发索取数据的一种请求 向服务器提交数据的一种请求
服务器端获取值的方法 $_GET $_POST
安全性 低 较安全
大小 URL 的最大长度是 2048 个字符 没有大小限制

echo、print、print_r、var_dump

echo print print_r var_dump
语言结构 语言结构 普通函数 普通函数
输出一个或多个字符串 输出字符串 打印关于变量的易于理解的信息 打印关于变量的易于理解的信息(带类型)

Redis 和 Memcached

缓存 Redis Memcached
数据支持类型 常用的数据类型有5种:String、Hash、List、Set和ZSet 仅支持简单的key-value结构
线程 单线程的IO复用模型 多线程,非阻塞IO复用的网络模型
是否支持事务 ✔ ✖
持久化 ✔ ✖

Nginx 和 Apache

web服务器 Nginx Apache
反向代理 非常好 好
Rewrite规则 非常好 好
FstCGI 好 差
热部署 ✔ ✖
系统压力比较 很小 小
稳定性 非常好 好
安全性 一般 好
静态文件处理 非常好 一般
虚拟主机 ✔ ✔
内存消耗 非常小 很大

urlencode 和 rawurlencode

函数 对空格的处理 返回值
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

存储引擎 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

数据类型 varchar char
解释 变长 定长
定义长度 小于定义长度时,还是按实际长度存储,插入多长就存多长 如果插入的长度小于定义长度时,则用空格填充
存储的容量 最多能存放 65532 个字符。varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节。 最多能存放的字符个数 255,和编码无关

结束语

持续更新中~~~,如果有添加或者纠正的地方欢迎评论。
(你的每一个👍都是我更新的动力)


赏
 上一篇
MacOS安装软件时提示文件已损坏 MacOS安装软件时提示文件已损坏
为什么会出现“文件已损坏”首先你安装的软件是汉化的或者是破解过的,所以安装完后就提示这个错误。 如何解决“文件已损坏”的问题 首先安全性改为任何来源打开终端,输入一下命令即可 sudo spctl --master-disable 系统偏好
2020-07-02
下一篇 
手把手教你如何做一套utm广告投放 手把手教你如何做一套utm广告投放
设计背景 目前平台上缺乏对用户来源和生命周期的管理,导致外部投放活动和平台的运营活动无法精确掌握投放效果。这次增加的功能,可以让我们掌握不同的投放、活动所带来的用户质量,从而优化投放及活动手段。 设计概览 通过在链接后面添加UTM
2020-05-07 WXiangQian
  目录