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)是一种在命令行和程序语言里定义一个字符的方法。
- 结尾必须以分号结束,否则编译不成功。
- EOF可以用任何字符代替,但首位必须一致。
- 结束标识必须顶格独自占一行(从首行开始前后不能衔接任何空白字符)
- 开始标识可以不带引号或带单双引号,不带引号和带单双引号效果一样。
5、PHP数据类型
integer(整型)、string(字符串)、float(浮点型)、boolean(布尔)、array(数组)、object(对象)、null(空值)
6、PHP常量
常量是一个简单值得标识符,该值在脚本中不能改变。常量名称是由英文、下划线、和数字构成,但是数字不能作为首字母(常量名不需要加$符),常量是全局的。
define('常量名称', '常量值', false),define用来定义常量,第一个参数是常量名称,第二个参数是常量值,第三个参数是bool(true、false)默认是false大小写敏感,true是大小写不敏感。
7、PHP注释符号
- /*多行注释*/
- //单行注释
- #单行注释
8、在PHP里.的作用是什么
在PHP里.的作用是拼接字符串
9、PHP运算符
- 算术运算符:+相加、-相减、*乘法、/除法、-x取反、%除法取余、.拼接、intdiv()整除(PHP7+新增运算符)
- 赋值运算符:=左侧操作数被设置为右侧表达式数、+=相加、-=相减、*=相乘、/=相除、%=除法取余、.=连接两个字符串
- 递增、递减运算符:++i(先i+1,然后返回i)、i++(先返回i,然后i+1)、--i(先i-1,然后返回i)、i--(先返回i,然后i-1)
- 比较运算符:==相等、===绝对相等(类型相同)、!=不等、!==绝对不等、<>不等、<小于、>大于、<=小于等于、>=大于等于
- 逻辑运算符:and与、or或、&&与、||或、xor异或、!非
- 数组运算符:+集合、==相等、===恒等、!=不相等、!==不恒等、<>不相等
- 三元运算符:格式(isset($x) ? $x : $y),PHP7+新增null合并运算符??(格式:$x ?? '$x为空',$x存在不为null,返回$x。为null返回错误提示)
- 组合比较符: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索引有几种,有什么区别没有
- 普通索引:没有任何限制
- 唯一索引:与普通索引类似,不同之处就是索引字段值是唯一的允许有空值
- 主键索引:一般是建表的时候设置,主键值是唯一的,不允许有空值
- 复合索引:多个列上创建索引,加速复合条件查询
- 全文索引:在MySQL5.6之前只有MyISAM引擎有全文索引,MySQL5.6之后InnoDB也支持全文索引。
20、MySQL中MyISAM和InnoDB的区别
MyISAM引擎查询快,支持全文索引,不支持事务、外键,支持表级锁。
InnoDB引擎查询慢,增删改快,支持事务、外键,支持事务和行级锁。MySQL5.6之后支持全文索引。
21、InnoDB 4大特征
- 插入缓冲
- 二次写
- 预读
- 自适应hash索引
21、数据库优化
- 选择合适的字段类型(比如用varchar替换char)
- 用join连接代替子查询
- 使用union联合代替手动创建临时表
- 事务
- 锁定表
- 使用外键
- 使用索引
- 优化查询语句
- 分库、分表
22、优化查询语句的方法
- select查询尽量不要直接用*,直接使用指定的字段
- 在相同类型的字段上作比较操作(不用进行类型转换)
- 不要在索引的字段上使用函数操作
- 尽量使用数字类型字段
- 避免使用!=、<>、is null、is not null
- 建议每张表都设置自增主键
- 避免大事务操作
源代码已上传GitHub:https://github.com/cuiyuanxin/php-demo/blob/master/basics.php
笔记持续更新。。。
纯手打笔记,如有错误请评论提出,谢谢。
PHP基础笔记的更多相关文章
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- php代码审计基础笔记
出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...
- MYSQL基础笔记(六)- 数据类型一
数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...
- MYSQL基础笔记(五)- 练习作业:站点统计练习
作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...
- MYSQL基础笔记(四)-数据基本操作
数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...
- MYSQL基础笔记(三)-表操作基础
数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...
- MYSQL基础笔记(二)-SQL基本操作
SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...
- MYSQL基础笔记(一)
关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
- JavaScript基础笔记一
一.真假判断 真的:true.非零数字.非空字符串.非空对象 假的:false.数字零.空字符串.空对象.undefined 例: if(0){ alert(1) }else{ alert(2) } ...
随机推荐
- MFC多语言程序版本,在不同的windows系统上的使用
如何使MFC程序界面支持多国语言?这次使用后给自己做一个总结. 我们使用vc6.0的版本来试验 1. 切换到资源视图,右键Dialog->Insert Copy 2. ok后,会出来一个语言的选 ...
- 防止系统锁屏-python、C++实现
一.背景 作为一个开发,我的电脑经常是一个礼拜不关机,甚至时间更久,不知道在其他人看来这是不是一个常规操作.在日常工作中,我们的电脑也是一直处于非锁屏状态,出于对个人工作成果的安全性保护,我们公司给每 ...
- Java集合详解7:HashSet,TreeSet与LinkedHashSet
今天我们来探索一下HashSet,TreeSet与LinkedHashSet的基本原理与源码实现,由于这三个set都是基于之前文章的三个map进行实现的,所以推荐大家先看一下前面有关map的文章,结合 ...
- geoserver矢量瓦片发服务前端展示偏移问题解决
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 在之前的<项目角度谈矢量切片运用以及Geoserver处理自定义 ...
- Android app去掉https签名校验
本文同步至http://javaexception.com/archives/30 问题: 之前的一个开源项目碰到了一个问题,Fix CertPathValidatorException: Trust ...
- 判断JS数据类型的四种方法
在 ECMAScript 规范中,共定义了 7 种数据类型,分为 基本类型 和 引用类型 两大类,如下所示: 基本类型:String.Number.Boolean.Symbol.Undefined.N ...
- Android 平台 Native 代码的崩溃捕获机制及实现
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/g-WzYF3wWAljok1XjPoo7w 一.背景 ...
- ReactiveSwift源码解析(四) Signal中的静态属性静态方法以及面向协议扩展
上篇博客我们聊了Signal的几种状态.Signal与Observer的关联方式以及Signal是如何向关联的Observer发送事件的.本篇博客继续上篇博客的内容,来聊一下Signal类中静态的ne ...
- 最短路问题之Dijkstra算法
题目: 在上一篇博客的基础上,这是另一种方法求最短路径的问题. Dijkstra(迪杰斯特拉)算法:找到最短距离已经确定的点,从它出发更新相邻顶点的最短距离.此后不再关心前面已经确定的“最短距离已经确 ...
- C语言中的神兽strdup
C语言的确博大精深,在C语言的世界中遨游了那么多年,发现自己仍是菜鸟一枚,很多利器没有能够驾驭,今天介绍一个神兽,威力无比,但是却很少人能用得好. 函数原型: #include <string. ...