今天一个阳光明媚的大周天,小崔百无聊赖的翻看着各种老旧的经典电影,无奈谁让自己是没女朋友的单身狗呢。闲来无事就记录一下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

笔记持续更新。。。

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

PHP基础笔记的更多相关文章

  1. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  2. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

  3. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  4. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  5. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  6. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

  7. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  8. MYSQL基础笔记(一)

    关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...

  9. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

  10. JavaScript基础笔记一

    一.真假判断 真的:true.非零数字.非空字符串.非空对象 假的:false.数字零.空字符串.空对象.undefined 例: if(0){ alert(1) }else{ alert(2) } ...

随机推荐

  1. 一文带你超详细了解Cookie

    cookie 简介 什么是 cookie cookie,有时我们也用其复数形式 cookies,是服务端保存在浏览器端的数据片段.以 key/value的形式进行保存.每次请求的时候,请求头会自动包含 ...

  2. MySQL 复制 - 性能与扩展性的基石 4:主备切换

    一旦使用 MySQL 的复制功能,就很大可能会碰到主备切换的情况.也许是为了迭代升级服务器,或者是主库出现问题时,将一台备库转换成主库,或者只是希望重新分配容量.不过出于什么原因,都需要将新主库的信息 ...

  3. 【JVM虚拟机】(5)---深入理解JVM-Class中常量池

    深入理解Class---常量池 一.概念 1.jvm生命周期 启动:当启动一个java程序时,一个jvm实例就诞生了,任何一个拥有main方法的class都可以作为jvm实例运行的起点. 运行:mai ...

  4. .NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证

    内容:本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址. 在这一篇文章中我们希望使用Ope ...

  5. 带你学习AOP框架之Aspect.Core[1]

    在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的 ...

  6. python——绘制二元高斯分布的三维图像,

    在对数据进行可视化的过程中,可能经常需要对数据进行三维绘图,在python中进行三维绘图其实是比较简单的,下面我们将给出一个二元高斯分布的三维图像案例,并且给出相关函数的参数. 通常,我们绘制三维图像 ...

  7. spring源码 — 四、MVC

    spring mvc是怎么实现的?为什么我们只需要在方法上写一个注解,就可以通过http访问这个接口?下面我们分3部分来解答这两个问题 注意:本文是基于spring4.3.2的 spring mvc整 ...

  8. C#操作符??,?,?:功能解析

    ??操作符:叫做空合并操作符,它会对左右两个操作数进行判断,如果左边的数不为空,就返回左边的数,否则返回右边的数. ?操作符:语法糖,表示可空类型,可空类型也是值类型,它是包含null值的值类型,可通 ...

  9. Git 中 .gitignore 的配置语法

    一.前言 在日常的开发中,当我们需要将一个项目提交到 Git 时,并不是所有的文件都需要提交,比如一些自动生成的文件,类似于 .idea 文件.class 文件等,这时候就可以使用.gitignore ...

  10. 将博客搬至CSDN https://blog.csdn.net/Fredric_2014

    将博客搬至CSDN https://blog.csdn.net/Fredric_2014