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) } ...
随机推荐
- Telerik控件集-2019.R1.SP1.All
Telerik 专注于微软.Net平台的表示层与内容管理控件,提供高度稳定性和丰富性能的组件产品DevCraft,并可应用在非常严格的环境中.Telerik拥有 Microsoft, HP, Alco ...
- ES 12 - 配置使用Elasticsearch的动态映射 (dynamic mapping)
目录 1 动态映射(dynamic mapping) 1.1 什么是动态映射 1.2 体验动态映射 1.3 搜索结果不一致的原因分析 2 开启dynamic mapping策略 2.1 约束策略 2. ...
- centos 修改hostname
centos修改主机名的正确方法 1 centos6下修改hostname [root@centos6 ~]$ hostname # 查看当前的hostnmae centos6.magedu.com ...
- .netcore2.1在控制器中和类中,获取appsettings中值的方法
一般我们在开发项目中,都会从配置文件中获取数据库连接信息.自定义参数配置信息等. 在.netcore中在控制器和自定义类中,获取配置文件中参数方式如下: appsettings.json { &quo ...
- Exchange-重建见证服务器和目录
问题描述: 在升级Exchange 2013 CU22检查群集节点状态的过程中发现群集组处于失败状态,具体报错信息如下:警告:数据库可用性组"***"见证处于失败状态.数据库可用性 ...
- 有关Windows10中诊断和反馈隐私设置
当你使用 Windows 时,我们将收集诊断信息,为了确保能收到你(我们的客户)的反馈,我们为你提供了多种方式,以便你可以随时发送反馈,也可以在某个特定的时间(例如当 Windows 10 向你提出关 ...
- mysql 8 nodejs连不上
https://www.jianshu.com/p/bf37e0bc7080 alter user 'root'@'localhost' identified with mysql_native_pa ...
- kafka监控项目大全
https://github.com/claudemamo/kafka-web-console http://github.com/pinterest/doctorkafka http://g ...
- Linux如何查看与测试磁盘IO性能
1. 查看磁盘 IO 性能 1.1 top 命令 top 命令通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能,如果这个数值过大,很可能是磁盘 IO 太高了,当然也可能是其他原因,例如网络 ...
- Java数据结构和算法 - 栈和队列
Q: 栈.队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈.队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈.队列.链表.树等等)都适用于数据库应 ...