今天一个阳光明媚的大周天,小崔百无聊赖的翻看着各种老旧的经典电影,无奈谁让自己是没女朋友的单身狗呢。闲来无事就记录一下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. 记一次重大生产事故,在那 0.1s 我想辞职不干了!

    一.发生了什么? 1.那是一个阳光明媚的下午,老婆和她的闺蜜正在美丽的湖边公园闲逛(我是拎包拍照的). 2.突然接到甲方运营小妹的微信:有个顾客线上付款了,但是没有到账,后台卡在微信支付成功(正常状态 ...

  2. The following untracked working tree files would be overwritten by merge

    git pull的时候遇到这样的问题: The following untracked working tree files would be overwritten by merge balabal ...

  3. HTML阻止iframe跳转页面并使用iframe在页面内嵌微信网页版

    昨天看到这篇文章[置顶]开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面 就想弄一个winform结合html5的一个小东西,突有兴致,想在里面嵌套一 ...

  4. 《Jave并发编程的艺术》学习笔记(1-2章)

    Jave并发的艺术 并发编程的挑战 上下文切换 CPU通过时间片分配算法来循环执行任务,当前时间片执行完之后会切换到下一个任务.但是,切换会保存上一个任务的状态,一遍下次切换回这个任务时,可以再次加载 ...

  5. 由浅入深讲解责任链模式,理解Tomcat的Filter过滤器

    本文将从简单的场景引入, 逐步优化, 最后给出具体的责任链设计模式实现. 场景引入 首先我们考虑这样一个场景: 论坛上用户要发帖子, 但是用户的想法是丰富多变的, 他们可能正常地发帖, 可能会在网页中 ...

  6. HTML入门知识汇总

    1. HTML认识 1.1 什么是HTML HTML是描述(制作)网页的语言,指的是超文本标记语言(Hyper Text Markup Language). 超文本:就是指页面内可以包含图片.链接.甚 ...

  7. cesium 之地图贴地量算工具效果篇(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  8. SQLsever存储过程分页查询

    使用存储过程实现分页查询,SQL语句如下: USE [DatebaseName] --数据库名 GO /****** Object: StoredProcedure [dbo].[Pagination ...

  9. lunix脚本进程挂掉时显示cpu和内存信息及挂掉的时间

    #!/bin/shwhile [ true ]; do #查询是否有8899正在运行的进程netstat -an|grep 8899if [ $? -ne 0 ]thennowtime=$(date ...

  10. 在word中如何美观地插入代码

    打开这个网站 http://www.planetb.ca/syntax-highlight-word 进去后我们看到下面的界面 中间的空白文本框,可以插入代码,下面可以选择代码种类,最后点击Show ...