PHP基础笔记

今天一个阳光明媚的大周天,小崔百无聊赖的翻看着各种老旧的经典电影,无奈谁让自己是没女朋友的单身狗呢。闲来无事就记录一下PHP的一些基础知识吧!

1、PHP是什么?

PHP是一种创建动态交互性站点的服务器脚本语言。

2、PHP的语法

PHP脚本可以放置在文档的任何位置,PHP脚本是以<?php开始,?>结束。PHP文件的默认扩展名是“.php”,PHP文件通常包含HTML标签和PHP脚本代码。PHP中每个代码行必须以分号(;)结束,分号是一种分隔符,用来把指令集区分开来。

3、PHP变量

变量是用于存储信息的容器。

4、echo、print、print_r、printf、sprintf、var_dump的区别

echo是PHP语言,没有返回值,可以输出一个或多个简单类型数据(int、string)。

print即使函数又不能算是函数(print()可以打印数据,print也可以直接打印数据),有返回值,可以打印一个简单类型的数据(int、string)。

print_r是函数,有返回值,可以打印复杂类型的数据(array、object)。

printf是函数,输出格式化之后的字符串。

sprintf是函数和printf一样,唯一不同的是它不会直接输出,而是要赋值给一个变量。

var_dump是函数,用来输出变量的内容、类型、长度,通常用来调试。

5、EOF(heredoc)是什么及使用方法

EOF(heredoc)是一种在命令行和程序语言里定义一个字符的方法。

  1. 结尾必须以分号结束,否则编译不成功。
  2. EOF可以用任何字符代替,但首位必须一致。
  3. 结束标识必须顶格独自占一行(从首行开始前后不能衔接任何空白字符)
  4. 开始标识可以不带引号或带单双引号,不带引号和带单双引号效果一样。

5、PHP数据类型

integer(整型)、string(字符串)、float(浮点型)、boolean(布尔)、array(数组)、object(对象)、null(空值)

6、PHP常量

常量是一个简单值得标识符,该值在脚本中不能改变。常量名称是由英文、下划线、和数字构成,但是数字不能作为首字母(常量名不需要加$符),常量是全局的。

define('常量名称', '常量值', false),define用来定义常量,第一个参数是常量名称,第二个参数是常量值,第三个参数是bool(true、false)默认是false大小写敏感,true是大小写不敏感。

7、PHP注释符号

  1. /*多行注释*/
  2. //单行注释
  3. #单行注释

8、在PHP里.的作用是什么

在PHP里.的作用是拼接字符串

9、PHP运算符

  1. 算术运算符:+相加、-相减、*乘法、/除法、-x取反、%除法取余、.拼接、intdiv()整除(PHP7+新增运算符)
  2. 赋值运算符:=左侧操作数被设置为右侧表达式数、+=相加、-=相减、*=相乘、/=相除、%=除法取余、.=连接两个字符串
  3. 递增、递减运算符:++i(先i+1,然后返回i)、i++(先返回i,然后i+1)、--i(先i-1,然后返回i)、i--(先返回i,然后i-1)
  4. 比较运算符:==相等、===绝对相等(类型相同)、!=不等、!==绝对不等、<>不等、<小于、>大于、<=小于等于、>=大于等于
  5. 逻辑运算符:and与、or或、&&与、||或、xor异或、!非
  6. 数组运算符:+集合、==相等、===恒等、!=不相等、!==不恒等、<>不相等
  7. 三元运算符:格式(isset($x) ? $x : $y),PHP7+新增null合并运算符??(格式:$x ?? '$x为空',$x存在不为null,返回$x。为null返回错误提示)
  8. 组合比较符:PHP7+新增组合运算符也称之为太空船运算符,可以轻松实现两个变量的比较,不仅限于数值类的比较。组合运算符格式:<=>,组合运算符解析:$x = $a <=> $b,$a > $b则$x等于1,$a < $b则$x等于-1,$a == $b则$x等于0。

10、if...elseif...else和switch判断语句

if...elseif...else和switch都是根据条件判断去执行不同动作。

11、超全局变量

超全局变量是PHP自带变量,在脚本的全部作用域都可用。$GLOBALS、$_GET、$_POST、$_FILES、$_ENV、$_SERVER、$_COOKIE、$_SESSION、$_REQUEST

12、PHP循环

while、do...while、for、foreach

13、魔术常量

__LINE__文件中当前行号、__FILE__文件完整的路径和文件名、__CLASS__当前类名、__FUNCTION__当前函数名、__METHOD__当前类名和方法名、__NAMESPACE__当前命名空间、__DIR__文件所在目录、__TRAIT__代码复用方法traits

14、include、require、include_once、require_once的区别

include、require、include_once、require_once包含加载文件其他文件代码

include、require不同之处:require会产生致命报错,当文件代码有错误的时候脚本会停止执行,include在文件代码有错误时会生成一个警告,脚本会继续执行。

include_once、require_once只包含一次,如果已经存在文件代码,就不会继续包含加载。

15、cookie、session的相同和不同之处

cookie、session跨页面不跨用户,cookie只能能保存字符串类型数据,session可以保存任何人类型数据。cookie产生于服务器,存储在客户端。session产生于服务器,存储在服务器。

16、Redis和MemCached的区别:

Redis和MemCached都是key-value存储系统,MemCached存储数据类型单一,Redis可存储多种数据类型。Redis速度比MemCached快,MemCached存在内存中,断电数据会丢失。

17、Redis数据类型

string字符串、hash散列、list列表、set集合、sorted set有序集合

18、MySQL int(11)可以保存手机号码吗

不可以,int类型的长度4个字节,手机号在第5个字节的时候会被吞掉。

19、MySQL索引有几种,有什么区别没有

  1. 普通索引:没有任何限制
  2. 唯一索引:与普通索引类似,不同之处就是索引字段值是唯一的允许有空值
  3. 主键索引:一般是建表的时候设置,主键值是唯一的,不允许有空值
  4. 复合索引:多个列上创建索引,加速复合条件查询
  5. 全文索引:在MySQL5.6之前只有MyISAM引擎有全文索引,MySQL5.6之后InnoDB也支持全文索引。

20、MySQL中MyISAM和InnoDB的区别

MyISAM引擎查询快,支持全文索引,不支持事务、外键,支持表级锁。

InnoDB引擎查询慢,增删改快,支持事务、外键,支持事务和行级锁。MySQL5.6之后支持全文索引。

21、InnoDB 4大特征

  1. 插入缓冲
  2. 二次写
  3. 预读
  4. 自适应hash索引

21、数据库优化

  1. 选择合适的字段类型(比如用varchar替换char)
  2. 用join连接代替子查询
  3. 使用union联合代替手动创建临时表
  4. 事务
  5. 锁定表
  6. 使用外键
  7. 使用索引
  8. 优化查询语句
  9. 分库、分表

22、优化查询语句的方法

  1. select查询尽量不要直接用*,直接使用指定的字段
  2. 在相同类型的字段上作比较操作(不用进行类型转换)
  3. 不要在索引的字段上使用函数操作
  4. 尽量使用数字类型字段
  5. 避免使用!=、<>、is null、is not null
  6. 建议每张表都设置自增主键
  7. 避免大事务操作

源代码已上传GitHub:https://github.com/cuiyuanxin/php-demo/blob/master/basics.php

笔记持续更新。。。

纯手打笔记,如有错误请评论提出,谢谢。

上一篇:微信的API都是通过https调用实现的,分为post方法调用和get方法调用。不需要上传数据的采用get方法(使用IntraWeb开发)


下一篇:Invalidate(TRUE)与Invalidate(FALSE)区别(前者会发送WM_ERASEBKGND消息全部刷新,然后使用WM_PAINT消息绘制,而后者只发送WM_PAINT消息)