《我的憨憨女友都能看懂学会的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
  目录