1.前言

介绍PHP

  1. 介绍PHP相关人物

  2. 介绍细说PHP图书

  3. 介绍课程

  4. 学有所获

  5. 学习编程到底难不难

2.LAMP网站架构


1.介绍网站给你认识

  • 网络系统软件开发包括B/S与C/S两种结构都可以进行同样的业务处理

    1. 什么是C/S

      1. C -> client(客户端)/ S -> server (服务器)

      2. 特点:

        • C/S软件通常需要特定的客户端来使用。

        • 可以通过任意的协议进行通信。

        • C/S软件的客户端有数据处理和存储的能力。

        • 应用软件的计算和数据分配在客户端和服务器端。

    2. 什么是B/S

      1. B -> browser (浏览器)/ S -> server (服务器)

      2. 特点

        • B/S软件不需要安装特点的客户端。

        • B/S软件靠应用层的HTTP协议进行通信。

        • B/S结构软件将所有数据都存储在服务器上。

    3. B/S软件的优缺点

      1. B/S结构相比C/S结构使用起来方便,不需要下载客户端。
      2. B/S结构维护、升级方便。
      3. B/S结构成本低。
      4. B/S结构数据相对安全。
      5. B/S结构应用服务器运行数据复合较重。
  • 网站的功能已经彻底改革,从“静态内容”的展示转向“动态内容”的传递

    1. 静态网站

    2. 动态网站

2.HTTP协议

  1. 什么是HTTP协议

    1. 超文本传输协议(Hyper Text Transfer Protocol)。
    2. 互联网上应用最广泛的一种网络协议。
    3. 设计HTTP的目的就是为了提供一种发布和接受HTML页面的方法。
    4. HTTP就是用于从服务器传输超文本到本地浏览器的传输协议。
    • HTTP协议的简单工作过程

      1. 浏览器首先通过网络访问服务器80端口和服务器建立连接。

      2. 浏览器像服务器发送请求命令,并将自己的一些信息发送给浏览器,这些信息不明确显示出来。

        • 发送请求时,HTTP协议可以通过多种方法进行请求的发送。
        • GET方法:用来请求、访问已经被URL标识的资源。我们在地址栏中输入的内容,默认使用GET方式传输。
      3. 服务器收到客户端发送的请求以后,服务器会回应客户端发送的请求。

      4. 返回的状态码:

        • 200 表示成功

        • 403 访问被拒绝

        • 404 页面没找到

      5. 关闭客户端和服务器之间的连接。

    1. URL

      • 我们在浏览器的地址栏路面输入的网站地址就叫做URL(uniform resource locator)统一资源定位符
    2. 域名

      • 域名就是一个名字,主要用来方便记忆服务器地址
    3. 常看到的协议

      • Https:// 带有安全套接的协议 传输是加密的。
      • ftp:// 文件传输协议。
      • file:/// 本地文件协议
    4. 小练习

      https://www.lmonkey.com:8181/index/page/java.html?p=pname&u=username&pwd=abc

3.动态网站开发所需要的构件

  1. 客户端浏览器

    • 浏览器是万维网服务的客户端浏览程序,可以向万维网(world wide web)服务器发送各种请求,并对服务器发来的超文本信息和各种多媒体数据进行解释、显示和播放。

    • 浏览器就是指显示网页服务器或者文件系统HTML文件内容,并让用户与这些文件交互的一种软件。网页浏览器主要通过HTTP协议和指定URL地址与网页服务器交互获取网页。

    • 五大浏览器分类

      IE浏览器
      ie
      非IE浏览器
      Chrome Firefox Safari Opera
      chrome firefox safari opera
  2. 超文本标记语言HTML(Hyper Text Markup Language)

    • 超文本: 不仅可以加入文字的文本文件,还可以加入链接、图片、声音、动画、影视等内容

    • 标记语言: 是在纯文本文件里面包含了HTML指令代码。这些指令代码并不是一种程序语言,它只是一种排版网页中资料显示位置的标记结构语言。

  3. 层叠样式表CSS

    • 主要作用
      1. 增强网页样式信息
      2. 实现样式信息与代码分离
  4. 客户端脚本编程语言JavaScript

    1. 在客户这一端执行的脚本语言。
    2. 专为网页交互而设计的脚本语言
     -   文档对象模型(DOM),提供访问和操作网页内容的方法和接口。
     -   浏览器对象模型(BOM),提供与浏览器交互的方法和接口。
    
  5. web服务器

    1. 主要功能是提供网上信息浏览服务。
    2. 目前web服务器有很多,常用的有:APACHE、IIS、TOMCAT、gws(谷歌)、Nginx等。
    3. APACHE:充满补丁的服务器软件,由NCSAhttpd服务器经过多次修改而得来的。
    4. Nginx:是一个很强大的高性能web服务器。是由伊戈尔·赛索耶夫为[俄罗斯](https://baike.baidu.com/item/俄罗斯/125568)访问量第二的Rambler.ru站点开发的
    
  6. 服务器端脚本编程语言

    1. 常用的服务器端脚本编程语言:PHP、JSP、ASP
    2. PHP是一种创建动态交互性站点强有力得服务器脚本语言,免费,并且使用广泛。
  7. 数据库管理系统

    1. MySQL数据库:开源免费。

4. 几种主流的web应用程序平台

性能比较 LAMP J2EE ASP.NET
运行速度 较快
开发速度
运行损耗 一般 较小 较大
难易程序 简单 简单
运行平台 Linux/Unix/windows等 绝大多数平台均可 Windows平台
扩展性 较差
安全性 较差
应用程度 较广 较广 较广
建设成本 非常低 非常高
  • LAMPLinux、Apache、MySQL、PHP
  • LNMPLinux、Nginx、MySQL、PHP
  • WAMPWindows、Apache、MySQL、PHP

5. 优秀的WEB程序员是如何炼成的

1. 具备扎实的技术功能
2. 遵循良好得编码规范
3. 问题要解决不要逃避
4. 扩充自己得想象力
5. 对新技术的渴求
6. 挖掘设计模式,提高代码质量
7. 多与高手交流,学习经验
8. 韧性和毅力

3. 走进HTML世界


1. HTML5的发展路程

  • 1993年,IETF发布HTML1.0版本(Internet工程任务组)。

  • 1995年,W3C接管,发布HTML2.0版本(表格布局)。

  • 1996年,w3c发布HTML3.2版本。

  • 1997年,W3C发布HTML4.0版本。

  • 1999年,W3C发布HTML4.01版本(最终使用版)。

    • 线路1:XHTML版本(严格版本)
      • 2000年,W3C发布XHTML1.0版本。
      • 2001年,W3C发布XHTML1.1版本。
    • 线路2:HTML5版本(所有浏览器厂商一起研发)
  • 2004年,WHATWG 发布了HTML5草案

  • 2004~2008年,W3C和WHATWG

  • ?现今为止HTML5依旧没有发布(2019 HTML、2020 HTML)

2.HTML5到底是什么

​ HTML5标签 + CSS3 + JavaScript + API ≈ HTML5

3.如何创建HTML文件

​ 鼠标右键->新建文本文件->更改后缀名.html (windows为例)

  1. 创建文件所需要注意事项
    • 可以以中文命名,但是不允许使用中文。
    • 不允许使用特殊字符。
    • HTML文件名推荐使用小写。
    • 创建完HTML文件后依然是文本文件格式,那么需要将系统中隐藏已知文件类型扩展名勾选掉。

4.HTML标签相关

  1. HTML标签

    标签是HTML的最新本的单位,也是最重要的组成部分,通常用两个角括号括起来得:”<” 和 “>”。

    • 标签有两种形式:

      1. 成对标签(双标签)

        <p>内容</p>
        
      2. 不成对标签(单标签)

        <hr />
        
  2. HTML标签的大小写问题

    标签是大小写无关的,与表示意思一样。

    注意:HTML标签推荐使用小写

  3. HTML标签属性

    1. HTML属性一般都出现在HTML标签中,是HTML标签的一部分。

    2. 标签可以有属性,包含了额外的信息,属性的值一定要在双引号中。而且标签还可以存在多个属性。

    3. 一般属性由属性名和属性值成对出现:

      • 语法:

        <标签名 属性名1=“属性值” 属性名2=“属性值”></标签名>

  4. HTML颜色值的设置

    1. 浏览器都支持颜色名称集合,颜色值是一个关键字或者是一个RGB格式的数字,在网页中都用的很多。
    2. 使用英文单词作为颜色值:
      • red 红色 | green 绿色 | blue 蓝色 | pink 粉色 | purple 紫色等。
    3. 六位的十六进制颜色值:
      • ff0000 简写:#f00

      • 前两位表示红色,中间两位表示绿色,最后两位表示蓝色。
  5. HTML注释

    1. 注释的好处:

      • 方便查找、比对、方便其他程序员快手了解你得代码、方便以后自己对自己代码理解和修改。

      • 注释的内容不会被浏览器解析出来。

      • 格式:

        <!--书写输入的内容-->
        
  6. HTML的代码格式

    • 任何回车或者空格在源代码中都不起作用,所以在编写HTML代码时,都可以使用回车或者空格进行代码排版,这样可以使代码清晰便于团队合作,必须保持严格的缩进规则,缩进以tab键为准。
  7. HTML实体字符

    &nbsp; 空格
    &gt; <
    &lt; >
    &copy; 版权符号©
    

5. HTML主体结构

<!DOCTYPE html> <!--声明头-->
<html>
  <!--头标签-->
  <head>
  </head>
  <!--体标签-->
  <body>
  </body>
</html>
  1. 最顶部声明<!DOCTYPE html>

    • 声明是文档的第一成份,位于文档的最顶部。
    • 该标签就是告诉浏览器所使用的HTML规范。
  2. 以开始,以结束,中间包含头部标签及主体标签

6. <head>标签中常用的标签

<head lang="en">
  <!--
	lang是language的意思,lang="en" 属性对页面声明主要语言,en表示英文,zh-cn表示中文。
	搜索引擎不会判断该站点是中文还是英文,它让搜索引擎知道你得站点是中文站,这些都是HTML规范,越规范,越容易被收录
	-->
<title></title>设置页面字符串
<meta charset="utf-8" /> 设置页面字符集
<meta http-equiv="content-type" content="text/html;charset=utf-8" />设置页面字符集
<!--http-equiv 告知浏览器的行为-->
<meta http-equiv="refresh" content="5;url=https://www.lmonkey.com" /> 设置5秒后自动跳转到学习猿地
<meta http-equiv="refresh" content="5" />设置浏览器5秒刷新一次
<!--name 告知浏览器的内容-->
<meta name="keywords" content="关键字1,关键字2"/> 设置网站关键字,多个关键字之间用英文状态下的逗号分割
<meta name="description" content="描述的内容" />设置网站的描述
<link />定义两个文档之间连接的关系
<!--
	rel = "表示文档与被连接文档之间的关系"
	type = "被连接文档的类型"
	href = "被连接文档的地址"
-->
<link rel="icon" type="" href=""/>加载标题icon图标
<!--了解级别-->
<link rel="stylesheet" type="text/css" href="" />加载CSS样式
<style></style> 加载CSS样式
<script></script> 加载JS脚本
<!--阻止移动浏览器自动调整页面大小-->
<meta name="viewport" content="initial-scale=2.0,width=device-width" />
<!--
	name = "viewport" 说明此meta标签定义视口的属性
	initial-scale = 2.0 意思是将页面放大两倍
	width = device-width 告诉浏览器页面的宽度的能与设备的宽度
-->
<meta name="viewport" content="width=device-width,maximun-scale=3,minimum-scale=0.5" />
<!--允许用户将页面最大放大至设备宽度3倍,最小压缩至设备宽度的一半-->
<meta name="viewport" content="initial-scale=1.0,user-scalable=no" />
<!--禁止用户缩放,可以在混合APP时,为了使html页面更逼真,使页面无法缩放。user-scalable=no是禁止缩放-->

7. <body>标签中常用的标签

1. 文本与文本格式标签

<p></p>  <!--段落标签-->
<b></b>		<!--加粗-->
<strong></strong>  <!--强调某段文本-->
<em></em>   <!--强调某段文本-->
<i></i>	<!--斜体-->
<br/>	<!--换行-->
<hr />	<!--水平线-->
<u></u>	<!--下划线标签-->
<del></del>	<!--删除线标签-->
<hn></hn>	<!--h族标题标签-->
<bdo></bdo>	<!--覆盖默认的文本方向-->
<sub></sub>	<!--下标文本-->
<sup></sup>	<!--上标文本-->
<details></details>	<!--交互式控件、可见的或者隐藏的补充细节-->
<summary></summary>	<!--为details定义标题-->
<dialog></dialog>	<!--定义对话框或窗口-->
<pre></pre>	<!--原格式输出-->
<figure></figure>	<!--用于对元素进行组合。多用于图片与图片描述组合-->
<mark></mark> <!--标记文本-->
<figure>
	<img src="img.gif" alt="figure标签"  title="figure标签" />
	<figcaption>figure的标题</figcaption>
</figure>
<mark></mark>
	定义带有记号的文本,它会给你要突出显示的文本下加个背景色。
	如:<p>你是<mark>大长腿</mark>吗?</p>

2. 语义化标签

<div></div>
<span></span>
<header></header>
<footer></footer>
<nav></nav>
<address></address>
<section></section>
<article></article>
<aside></aside>

3. 列表标签

<ul></ul>
<ol></ol>
<li></li>
<dl></dl>
<dt></dt>
<dd></dd>

4. 超链接标签

<a></a>
<!--常用属性-->
<!--
	href = "" 用于定义需要跳转页面的地址
	target = "" 定义页面打开的方式
	常用的值:
		_self默认,当前窗口打开链接的文档
		_blank,在新窗口中打开文档
-->

5. 多媒体标签

<img />
<map></map>
<area />
<audio></audio>
<source />
<video></video>
<embed />
<progress></progress>
<meter></meter>

6. 表格相关标签及属性

  • 表格相关标签
<table></table>
<caption></caption>
<tr></tr>
<th></th>
<td></td>
<thead></thead>
<tbody></tbody>
<tfoot></tfoot>
  • table标签常用属性

    属性 描述 说明
    width 表格宽度
    height 表格高度
    align 表格在页面的水平摆放位置 取值:left/center/right
    background 表格的背景图片
    bgcolor 表格的背景颜色
    border 表格边框的宽度(以像素为单位) 表格默认没有边框
    bordercolor 表格边框颜色 当border >= 1时起作用
    cellspacing 单元格之间的间距
    Cellpadding 单元格内容与单元格边界之间的空白距离大小
  • tr(行)标签常用属性

    属性 描述
    height 行高
    align 行内容的水平对齐方式
    valign 行内容的垂直对齐方式
    Bgcolor 行的背景颜色
  • td(单元格)标签常用属性

    属性 描述
    width/height 单元格的宽度和高度
    align 设置水平对齐方式,取值left/center/right
    valign 设置垂直对齐方式,可取值top/middle/bottom
    bgcolor 单元格的背景颜色
    colspan 设置单元格跨列
    rowspan 设置单元格跨行

7.表单相关标签

<form></form>用于为用户输入创建HTML表单
<!--
	必须属性:
	action -- 浏览者输入数据被传送到的地方,比如一个PHP页面
	method -- 数据传送的方式
				get -- 此方式传递数据量少,但是传递的信息会显示在网址上。
				post -- 此方式传递信息多,而且不会把传递的信息显示在网址上。
-->
<input />为用户定义需要使用的表单项
<!--
		name -- 此表单项的名称
		value -- 此表单项的值
		type -- 代表一个输入域的显示方式(输入型、选择型、点击型)
-->
<input type="text" name="" value="" /> 普通文本域
<input type="password" name="" value="" /> 密码域
<input type="radio" name="" value="" />单选
<input type="checked" name="" value="" /> 复选
<label></label>为input元素定义标注(绑定元素)
<input type="file" name="" value="" />文件上传
<input type="submit" name="" value="" />提交按钮
<input type="image" src="" title="" alt="" />用图片代替提交按钮
<input type="reset" name="" value="" />重置按钮
<input type="hidden" name="" value="" />隐藏域
<input type="button" name="" value="" />按钮
<button></button> 提交按钮
<button type="submit"></button>提交按钮
<button type="button"></button>按钮
<textarea></textarea> 多行文本输入域
<select></select>下拉列表
<option></option>为下拉列表定义列表项
<fieldset></fieldset>将表单内的相关元素分组
<legend></legend>为fieldset定义标题
<optgroup></optgroup>为下拉列表定义分组
<datalist></datalist>定义可选数据列表
<!--新增类型-->
<input type="email" name="" value="" />
<input type="url" name="" value="" />
<input type="number" name="" value="" />
<input type="range" name="" value="" />
<input type="search" name="" value="" />
<input type="color" name="" value="" />
<input type="tel" name="" value="" />
<input type="date" name="" value="" />
<input type="time" name="" value="" />
<input type="week" name="" value="" />
<input type="month" name="" value="" />
<input type="datetime-local" name="" value="" />
<!--表单中常用的属性-->
<!--
readonly 输入域可以选择,但是无法修改。
disabled 输入域无法获取焦点,无法选择,以灰色显示
selected 为下拉列表定义默认选种
autofocus 自动获取焦点属性
placeholder 表单提示信息
required 用于强制用户必须为该表单赋值,否则提示信息
min 用于设定表单的最小值
max 用于设定表单的最大值
multiple 设定当前表单允许同时选中多个文件,适用于input[type=file]
pattern 用于自定义验证规则(需要配合正则的语法)
step 设定跳步的数值或者设定2个数值之间的间隔
novalidate 取消表单验证,适用于form标签
formaction 用于在提交按钮中修改当前表单的提交页面
formmethod 用于在提交按钮中修改当前表单的提交方式
formenctype 用于在提交按钮中修改当前表单提交数据编码类型(不用,文件上传时适用)
tabindex    切换索引属性
-->

8. HTML全局属性

contentEditable 内容可编辑属性
designMode 页面可编辑属性

9. HTML框架标签

<frameset></frameset>代替body标签定义框架页(H5取消)
<frame />定义frameset标签中每个框架页的内容
<iframe></iframe>在页面中开一块空间连接一个子页面

4.走进CSS世界


1. 了解CSS

  • CSS层叠样式表 cascading style sheet
  • 作用:用于增强控制网页样式并且允许样式信息与内容分离的一种标记性语言
  • CSS不需要编译,可由浏览器直接解析
  • CSS3是目前被使用最广泛的版本,但是部分特性尚不能得到支持
  1. CSS的基本语法

    • CSS定义分别由:选择符、属性、属性取值组成

    • 格式:

      p{color:yellowgreen}
      
    • CSS大小写不敏感,推荐使用小写。

    • 属性和值之间用冒号(:)分开,多个属性之间用分号(;)隔开

  2. CSS中的注释

    /*书写注释的内容*/
    

2. 放置CSS的几种方式

  1. 内联样式表(行内引用)

    <p style=""></p>
    
    • 内联的样式比其它方式更加灵活,但是需要和展示的内容混在一起,内联样式会失去样式表的优点。
  2. 内嵌样式表(内部引用)

    <!DOCTYPE html>
    <html>
      <head>
        <style></style>
      </head>
    </html>
    
    • 适用于一个HTML文档具有独一无二的样式时。
  3. 外联样式表(外部引用)

    <!DOCTYPE html>
    <html>
      <head>
        <link rel="stylesheet" type="text/css" href="文件地址" />
      </head>
    </html>
    
    <!--了解-->
    <style>
      	@import "CSS文件地址"
    </style>
    
    • 外部样式引用了外接的CSS文件。一般浏览器有缓存的功能所以用户不用每次都下载此CSS文件,并且外部引用相对于内部和内联来说高效的是节省带宽,外部引用是W3C推荐使用的标准。
  4. 多重样式表的叠加

    • 依照后定义的优先,所以优先级最高的是内联样式。连入的外部样式和内部样式表之间是最后定义的优先级高。

3. CSS选择器

### 1. 基本选择器
  • 类选择器(class选择器)
    • 在css中使用(.)来查找,类选择器可以有多个属性值,使用空格分开即可。
  • 唯一选择器(ID选择器)
    • 在CSS中使用(#)来查找。
  • 通配符选择器(*)
    • 匹配所有标签
  • tagName标签选择器
    • 根据HTML标签名来选择对应的标签,此时在页面中出现的所有该标签都会被选择。

2. 层级选择器

  • 组合选择器:选择器1,选择器2 多个选择器之间用逗号分隔。例:div,p
  • 包含选择器:选择器1 选择器2 表示选择器2被选择器1包含即可。例:div p
  • 子选择器:选择器1 > 选择器2 表示选择器1的子元素为选择器2(只有父子关系才可以)。例:div > p
  • 相邻选择器:选择器1 + 选择器2 表示选择紧贴在选择器1之后的选择器2元素。例 div + p
  • 兄弟选择器:选择器1 ~ 选择器2 表示选择器1后面的所有兄弟元素选择器2。 例 div ~ p

3. 属性选择器

  • 属性选择器就是根据属性名或者属性值来查找到某个元素
  • 标签[属性]
    1. E[ATT] 匹配所有具有ATT属性的E元素,不考虑属性值。
    2. E[ATT = VAL] 匹配所有ATT属性等于VAL的E元素。
    3. E[ATT ~= VAL] 匹配所有ATT属性具有多个空格分隔的值,其中一个值等于VAL的E元素。
    4. E[ATT |= VAL] 匹配所有的ATT属性具有多个连接分隔符的值,其中一个值以val-开头的E元素,主要用于lang属性。比如:’en-us’,’en-gb’(了解3)。
    5. E[ATT ^= VAL]属性ATT的值以VAL开头的E元素。
    6. E[ATT $= VAL] 属性ATT的值以VAL结尾的E元素。
    7. E[ATT *= VAL] 属性ATT的值中有VAL存在的E元素。

4. 结构性伪类选择器

  • 伪元素选择器(不是对真正的元素选择)
    1. E:first-line E元素的第一行。
    2. E:first-letter E元素的第一个字母。
    3. E:before E元素的内容之前。
    4. E:after E元素的内容之后。
  • 结构性伪类选择器
    • 在CSS中引入的结构性伪类选择器的共同特征是允许开发者根据文档树中的结构来指定元素的样式
      • 四个最基本的结构性伪类选择器
        1. :root 将样式绑定到页面的根元素。
        2. E:not() 对某个结构元素使用样式,但是想拍出这个元素下的子结构元素。
        3. E:empty 匹配所有为空的E元素。
        4. :target 代表链接到目标时。
      • 其他的结构伪类选择器
        • E:first-child 对一个父元素中的第一个子元素E设置样式。
        • E:last-child 对一个父元素中的对吼一个子元素E设置样式。
        • E:nth-child() 对指定需要的子元素E设置样式。
        • E:nth-last-child() 对指定需要的子元素E设置样式。
        • E:nth-of-type() 与:nth-child()作用类似,但是仅匹配使用的同种标签元素。
        • E:nth-last-of-type() 与:nth-last-child()作用类似,但是仅匹配使用的同种标签
        • E:nth-child(an+b)
          • a 表示每次循环中间隔几个改变样式。
          • b 表示指定在循环中开始的位置。
        • E:only-child 匹配父元素下仅有一个子元素,并且该子元素为E元素。
        • E:only-of-type 匹配父元素下使用同种标签的唯一一个子元素E。
        • E:enabled 匹配表单中激活的元素
        • E:disabled 匹配表单中未激活的元素。
        • E:checked 匹配表单中被选择的radio或者checkbox元素。
        • :focus 设置元素在其获取鼠标焦点的样式。
        • ::selection 匹配用户当前选中的元素(了解)。

5. 状态伪类选择器

	1. :link  设置超链接a在未被访问前的样式。
            		2. :visited 设置超链接a在其链接地址已经被访问的样式。
                                		3. :hover 设置元素在鼠标悬停时的样式。
                          		4. :active 设置元素在被用户激活时的样式。

6. 选择器优先级

4. CSS基本属性

1. 字体属性

  • color 字体颜色
  • font-style 指定文本的字体样式(正常、斜体)
  • font-size 指定文本字体大小
  • font-family 定义文本使用某个字体
  • font-weight 指定文本的粗细
  • font-variant 设置字体为小型大写字母
  • font 简写属性:斜体/小型大写字母/粗体/(字体/行高)/族科
  • letter-spacing 设置字的间距
  • word-spacing: 设置单词的词间距(对中文无效)
  • opacity 设置颜色的透明度
  • overflow | overflow-x | overflow-y 当内容溢出元素框时隐藏|自动|显示混动条
  • text-overflow 让溢出的文字以省略号显示
  • white-space 设置文字是否在同一行显示

2. 文本属性

  • text-align 元素内容对齐方式
  • text-decoration 指定文本是否有修饰,默认值为none。
  • text-indent 文本首行缩进
  • word-wrap 设置当前行超过指定容器的边界时是否换行。
  • vertical-align 设置对象内容的垂直对齐方式。
  • line-height 设置对象的行高

3. 背景属性

  • background-color 背景颜色 默认值:transparent透明的
  • background-image 背景图片
  • background-repeat 背景图片是否重复
  • background-size 设置背景图片大小
  • background-position 背景图片位置(相对于外层容器)
  • background-attachment 背景图片是否随内容滚动
  • background 背景属性简写属性

4. 尺寸属性

  • width 设置元素的宽度
  • height 设置元素的高度
  • min-height 设置最小高度
  • max-height 设置最大高度

5. 列表属性

  • list-style-type 设定列表的符号样式
  • list-style-image 使用指定的图片来代替列表的序号
  • list-style-position 设定列表需要的位置
  • list-style 列表简写属性

6. 定位属性

  • position 设定元素的定位方式
    • static 静态定位(默认)
    • relative 相对定位
    • absolute 绝对定位
    • fixed 根据窗口定位
  • z-index 设定定位元素Z轴的距离

7. 布局属性

  • display 设置元素的显示方式
    • inline 将元素作为行内元素样式显示
    • block 将元素作为块状元素显示
    • inline-block 设定一个元素既可以设定宽高属性,也可以在一行显示。
    • none 设置元素不显示(隐藏元素)
  • visibility 设置元素是否显示
    • visible 显示
    • hidden 隐藏

8. 浮动属性

  • float 浮动属性
    • left 设置元素向左浮动
    • right 设置元素向右浮动
    • none 设置元素不浮动(默认值)
  • clear 用于清除其他元素的浮动属性对当前元素的影响
    • left 用于抵消float:left效果
    • right 用于抵消float:right效果
    • both 用于清除float效果

9. 盒子模型

  • 标准盒模型
    • margin 外边距
    • border 边框
    • padding 内边距
  • 怪异盒模型
    • box-sizing 定义当前元素使用哪种盒模型
      • border-box(怪异)
      • content-box (标准)
  • 弹性盒模型
    • display:flex 定义父容器是一个弹性盒。
    • Justify-content 设置活检索弹性盒子元素在(主轴)方向上的对齐方式。
      • flex-start 默认值。项目位于容器的开头
      • flex-end 项目位于容器的结尾
      • center 项目位于容器的中心
      • space-between 项目位于各行之间留有空白的容器内。
      • space-around 项目位于各行之前、之间、之后都留有空白的容器内。
    • align-items 定义flex子项在flex容器的当前行的侧轴(纵轴)方向的对齐方式
      • stretch 默认值,项目被拉伸以适应容器
      • center 项目位于容器的中心
      • flex-start 项目位于容器的开头
      • flex-end 项目位于容器的结尾
    • flex-grow:number 规定项目将相对于其他灵活的项目进行扩展的量。默认是0。

10. 动画属性

  1. 浏览器私有前缀

    • -moz- Firefox
    • -webkit- chrome safari
    • -ms- IE
    • -o- Opear
  2. 圆角、阴影、渐变

    • border-radius 圆角
    • 阴影
      • 盒子阴影
      • 文字阴影
    • 渐变
      • linear-gradients 线性渐变
      • radial-gradient 径向渐变
  3. 转换Transform

    • transform2D

      • translate()
      • scale()
      • rotate()
      • skew()
    • transform3D

      transform属性值

  4. 过渡Transition

    • 过渡指定四要素
      1. transition-property 过渡属性,如background,color等。
      2. transition-duration 过渡所需要时间。
      3. transition-timing-function 过渡函数。既过渡的速度,方式等。
        • ease 默认值,规定慢速开始,然后变快,然后慢速结束过渡效果
        • linear 匀速
        • ease-in 规定以慢速开始,加速效果。
        • ease-out 规定以慢速结束,减速效果。
        • ease-in-out 规定以慢速开始和结束,先加速后减速效果。
      4. transition-delay 过渡延迟时间。表示开始执行的时间。
      5. transition 过渡属性简写属性
  5. 动画animation

    • animation 属性用于控制动画
    • 调用由@keyframes定义的动画
    • animation属性是一个简写属性
    • animation动画子属性
      • animation-name 调用动画,规定需要和keyframes的名字一致
      • animation-duration 动画完成一个周期所需要的时间
      • animation-timing-funtion 规定动画的速度变化类型
      • animation-delay 播放之前的延迟时间
      • Animation-iteration-count:数值|infinite 播放次数
        • infinite 表示无限次播放
      • animation-direction:normal|alternate 动画播放方向
        • normal 为默认值,表示正常播放
        • alternate 表示轮流播放,既动画会在奇数次正常播放,而在偶数次向后播放。
      • animation-fill-mode:forwards 动画停在最后一帧
        • 默认值为none
      • animation-play-state:paused | running 属性规定动画正在运行还是停止
        • 默认是为running

11. 媒体查询

  • 使用Media Query的基本语法

    @media mediatype and | not | only (media feature) {
    	CSS-Code
    }
    

5. 进入PHP的奇幻之旅


一、初识PHP

1.认识PHP

1. 什么是PHP
- PHP超文本预处理器、一门服务器端的脚本语言
- 注意:所有的PHP文件不能双击运行,必须通过服务器来访问。

2. 搭建PHP开发环境

  • LAMP Linux(操作系统) Apache(服务器软件) MySQL(数据库管理软件) PHP(服务器端脚本编程语言)

  • LNMP Linux(操作系统) Nginx(服务器软件) MySQL(数据库管理软件) PHP(服务器端脚本编程语言)

  • WAMP Windows(操作系统) Apache MySQL PHP (集成环境。好处:利于初学学习)

  1. 认识WAMP环境

    • WX20200217-192345@2x
    • 图标的三种颜色:
      • 红色:代表所有服务器未启动。
      • 黄色:代表部分服务未启动。(有可能是端口冲突,有可能是未安装成功)
      • 绿色:代表所有服务已启动,可以正常使用
  2. 如何搭建虚拟主机

    1.找到apache配置文件 ->wamp64/bin/apache/apache2.4.41/conf\httpd.conf
    2.开启apache配置文件中虚拟主机配置文件选项:Include conf/extra/httpd-vhosts.conf.去掉前面的#(#号代表注释)
    3.找到虚拟主机的配置文件:wamp64\bin\apache\apache2.4.41\conf\extra\httpd-vhost.conf.
    4.复制代码:
    	<VirtualHost *:80>
          ServerName xxyd.com  (域名)
          ServerAlias xxyd.com (别名)
          DocumentRoot "${INSTALL_DIR}/www/lmonkey" (需要管理的目录)
          <Directory "${INSTALL_DIR}/www/lmonkey/">
            Options +Indexes +Includes +FollowSymLinks +MultiViews
            AllowOverride All
            Require local
          </Directory>
        </VirtualHost>
    5.找到系统配置文件conf:C:\Windows\System32\drivers\etc\hosts打开配置ip及域名
    	例:127.0.0.1 xxyd.com
    6.重启apache服务器。
    
  3. 如何创建PHP文件

    • PHP文件的后缀名就是.php
    • PHP文件可以使用英文或者拼音,禁止使用中文命名。
    • 不允许有特殊字符
    • 文件的命名要有意义

3. PHP的开始和结束标记

  1. phpinfo() 显示当前服务器信息

    • PHP的版本号
    • 2020-02-17_195820
    • PHP的配置文件路径
      • 第一个表示PHP配置文件路径
      • 第二个表示PHP配置文件实际加载路径

    2020-02-17_200030

    • 完整的功能模块,在这个页面能够看到他表示PHP已经加载了该模块,可以使用模块下相关的函数或者方法

2020-02-17_200147

  1. PHP的开始和结束标记

    1.以<?php开始,以?>php结束 中间书写PHP代码即可(完整格式 推荐使用)
    2.以<?开始,以?>结束,中间书写PHP代码(短风格模式)
    	注意:
    	1.如果需要使用短风格模式必须开启php.ini配置文件中short_open_tag = Off设置为On才能使用。
    	2.设置short_open_tag = ON之后需要重启apache服务器
    
    php7版本之前还有两种方式
    3.<% 中间书写PHP代码 %> ASP风格。 需要更改php.ini配置文件asp_tags = Off 设置为on之后重启apache(ASP风格)
    4.<script language="php">中间书写PHP代码</script>(长风格模式)
    

4. PHP的其它特性

  • PHP是一门脚本语言,可以和其他的代码进行混编(HTML\CSS\JS)无标题

  • PHP的指令分隔符(或者叫命令执行符)

  • 英文状态下的分号(?

    • 任意一句PHP代码之后都必须使用命令执行符进行分割。
    • 如果该PHP代码已经是最后一句代码,可以不写指令分隔符。
  • 程序代码的分类(两类)

  • 单条的PHP代码

  • PHP代码块(流程控制、函数、类)

  • 关于程序的注释问题

  • 注释分为两大类,单行注释和多行注释

  • 单行注释://后面是数值的内容。#后面是注释的内容。

  • 多行注释:

    /*中间书写注释内容*/
    

  • 注意:多行注释不能包含多行注释,可以包含但行注释,因为注释以/*开始找到里自己最近的结束符停止。

  • 关于空白字符的处理

  • PHP不解析任何的空白字符。

5. PHP中的变量

  1. 什么是变量

    • 可以变化的量就叫变量
    • 变量就是一只无形的手,想抓什么就抓什么,抓到什么就是什么。
  2. 变量的命名规范

    • 声明PHP变量时,必须以$开始。
    • 声明变量名时不推荐使用中文,推荐使用英文。
    • 可以使用数字,但是数字不能开头。
    • 不可以使用特殊字符,除了下划线之外_(当做字母来处理)
    • 变量名严格区分大小写。
    • 变量名要有意义,不要乱起。
  3. 可变变量

    • 可以变化的变量
    • 可变变量只是变量的一种,可以在开头连续使用多个$符号。
    • 理论上$符号无限使用,实际中一般指使用2个$。
    • 结合方式是从右向左依次结合一个$,解析成字符后在结合下一个$,依此类推,直到最后欧一个。
  4. 变量的引用赋值

  5. 普通变量赋值
    1. 格式:变量2 = 变量1
    2. 引用变量赋值
    3. 格式:变量2 = &变量1

6. PHP中的数据类型

  1. PHP中的数据类型

    • 三大类八种数据类型
    • 标量
      1. 整型 int
      2. 浮点型 float
      3. 字符串 string
      4. 布尔值 boolean
    • 复合数据类型
      1. 数组 array
      2. 对象 object
    • 特殊数据类型
      1. 资源 resource
      2. null
  2. .整型数据类型

  3. 简单说就是整数,包括正整数,负整数,0
    2. 声明方式
    3. 正常10进制声明
    2. 8进制声明整型
    3. 例:变量 = 077;
    2. 注意:8进制声明以0开头
    4. 16进制声明整型
    5. 例:变量 = 0xff;
    2. 注意:16进制声明整型以0x开头,x不区分大小写。
    6. 2进制声明整型
    7. 例:变量 = 0b1010
    2. 注意:2进制声明整型使用0b开头,b不区分大小写。
    4. 浮点型:
    5. 浮点型就是数学中的小数和分数。
    2. 声明方式
    3. 小数方式
    1. 例:变量 = 3.14
    2. 科学计算法
    3. 例:变量 = 3.14e2;
    2. 表示3.14*10的2次方
    6. 字符串类型
    7. 一串字符就是字符串,字符串是涵盖字符的
    2. 字符串的声明方式
    3. 单引号声明
    1. 例:变量 = ‘’;
    2. 双引号声明
    3. 例:变量 = “”;
    4. 定界符声明
    5. 使用定界符需要注意开头和结尾的书写格式
    2. 以<<<开始后面根一串自定义的字符
    3. 书写完自定义字符时必须换行写内容
    4. 写完内容时必须另起一行写结束符号
    5. 结束符号所在的行必须顶头写,而且后面不能有任何内容
    6. 自定义字符串一般使用EOF (end of file)
    4. 单双引号的区别
    5. 解析转译字符的能力
    1. 单引号
    1. 不能解析转译字符,只能解析转移斜线()和自己本身
    2. 双引号
    1. 可以解析转译字符
    2. 解析变量的能力
    3. 单引号
    1. 单引号不解析变量,可以使用字符串的连接符连接变量使用。
    2. 双引号
    3. 双引号解析变量,但是要注意在双引号中解析变量需要使用英文状态下的花括号{}括起来。告诉字符串当变量解析。
    4. 对单双引号的支持(引号之间的互相嵌套)
    5. 单引号中可以包含双引号,如果包含单引号需要使用转译斜线转译
    2. 双引号中可以包含单引号,如果包含双引号需要使用转译斜线转译
    6. 我们到底使用哪种声明方式
    7. 能用单引号就用单引号(功能少效率高)
    2. SQL语句一般使用双引号。
    3. 大文本或者数据使用定界符方式。
    6. 布尔类型
    7. 布尔类型就是真(true)和假(false)两个值
    2. 布尔值表示真/假,有/无,行/不行
    3. 注意:布尔值只有2个值,一个true表示真,一个false表示假,在书写布尔值时绝对不能加引号。在PHP中布尔值不区分大小写。
    8. 复合数据类型
    9. 数组 array
    1. $xxyd = array(‘老高’,’卢新’,’小赵’);
    2. var_dump($xxyd);
    2. 对象 object
    3. 例子:代码15object.php
    10. 特殊数据类型
    11. 资源 resource 打开PHP程序之外的东西都是资源
    2. 空 null
    3. null类型中只有一个值:null
    2. 能得到null的几种情况
    3. 未赋值的变量,默认值为null
    2. 声明变量时,直接赋值为null
    3. 变量存在值,然后被删除值(unset())之后,值也是null

7.和变量相关的几个功能

  1. 删除变量的功能unset()
  2. 格式 unset(变量)
    2. 参数:要参数的变量
    3. 返回值:该功能没有返回值
  3. 检测变量是否设置值的功能 isset()
  4. 格式:返回值 = isset(要检测的变量)
    2. 参数:要检测的变量
    3. 返回值:返回检测的结果,如果该变量设置值返回true,未设置值返回fasle
    4. 只要赋值了不是null的数据,那么检测的结果都为true,如果变量未赋值或者赋值为null,检测结果都为false
  5. 检测变量值是否为空的功能 empty()
  6. 什么样的值为空
    1. int 0
    2. float 0.0
    3. string ” 或者 ‘0’
    4. boolean false
    5. array 空数组 array()
    6. object 都不为空
    7. resource 都不为空
    8. null null
    2. 格式:返回结果 = empty(检测的变量)
    3. 参数:要检测的变量
    4. 返回值:返回检测后的结果,如果该变量检测为空返回true,不为空返回false
  7. 学习功能主要学习三点
  8. 功能的作用
    2. 功能的参数
    3. 功能的返回值

二、数据类型转换

1. 如何获取数据类型

  1. var_dump() 该功能可以直接将数据的值和类型显示出来

    • 优点:既可以查看变量类型也可以查看值。
    • 缺点:类型和值的结果无法被接收,后续代码无法使用。
  2. gettype() 获取数据类型

    • 格式:变量 = gettype(检测变量);
    • 可以获取的值(可以返回的结果):
      1. integer
      2. double
      3. string
      4. boolean
      5. array
      6. object
      7. resource
      8. null
    • 优点:可以获取任何数据的类型,获取之后可以给下方程序使用
    • 缺点:功能强大导致效率低下,需要需要逐个匹配类型
  3. is_*()系列的功能检测变量类型

    • is_int() is_integer() 检测数据是否是整型
    • is_float() is_double() 检测数据是否是浮点型
    • is_string() 检测数据是否是字符串类型
    • is_bool() 检测数据是否是布尔类型
    • is_array() 检测数据是否是数组
    • is_object 检测数据是否是对象
    • is_resource() 检测数据是否是资源
    • is_null() 检测数据类型是否是null
    • is_scalar() 检测一个数据是否是标量(int\float\string\bool)
    • is-numeric() 检测数据是否是数字 (整型、浮点型、纯数字字符串)
    • 格式:结果变量 = is_*(检测的变量)
    • 优点:检测交流稿,并且可以接收检测的结构
    • 缺点:功能单一

2.数据类型转换(重点)

  • PHP是一门弱类型语言,八种数据类型可以转换而且不需要人工的介入。

  • 数据类型转换的分类

    1. 自动数据类型转换 (隐性数据类型转换)

    2. 强制数据类型转换 (显性数据类型转换)

    3. 自动数据类型转换

      • 自动类型转不需要人工干预
      • 自动类型转换发生在运算或者判断的过程中
      • 自动类型转换仅限于标量
      • 在类型转换过程中一般是向着更精确的数据进行转换
    4. 强制数据类型转换

      1. 使用语言结构方式修改变量类型

        • 可以转换的关键字
          1. 整型 integer int
          2. 浮点型 float double
          3. 字符串 string
          4. 布尔值 boolean bool
          5. 数组 array
          6. 对象 object
          7. 资源 无法转换
          8. 空 无法转换
      2. 使用指定类型的转换功能

        • strval() 转换为字符串类型

          • 参数:需要转换的变量
          • 返回值:返回转换后的结果
        • intval() 转换为整型

          • 参数:需要转换的变量
          • 返回值:返回转换后的结果
        • floatval() 转换为浮点类型

          • 参数:需要转换的变量
            -返回值:返回转换后个结果
        • 格式:新变量 = strval(原变量);

        • 字符串的转换规则

          1. 如果是纯数字字符串,转换之后只改变类型。
          2. 如果是字符串以数字开头,数字后面是非数字字符串,那么将字符串最前面的连续的数字字符取出来转换为数值。
          3. 注意:在数值前可以出现符号(- +)表示正负号。
      3. 使用通用类型转换功能 settype()

        • 格式 返回结果变量 = settype(变量,’类型’)
        • 注意:settype()该功能改变的是原有变量,返回是否转换成功(布尔值)。
        • 可以转换类型的关键字
          • int integer
          • float double
          • string
          • boolean
          • array
          • object
          • resource 不能转换
          • null
      4. 什么样的值转换布尔值为false(有限制的)

        • int 0
        • float 0.0
        • string ” 或者 ‘0’
        • boolean false
        • array 空数组 array()
        • object 都不为false
        • resource 都不为false
        • null null

三、PHP中的常量

  1. 什么是常量

    • 通常不会改变的量,叫做常量
    • 如果把变量比作一个黑板,那么常量就是一块墓碑,一次刻印终身受用。
  2. 常量如何声明

    1. 声明方式1:使用define()功能来声明常量
      格式:define(‘常量名’,’常量值’);
      注意:如果是7.3版本之前define允许接收第三个参数,如果设置为true表示常量名不区分大小写。默认为false区分大小写。

    2. 注意事项

      • 常量名:
        1. 常量名开头不可以使用$.
        2. 声明常量不要使用中文,可以使用英文,推荐大写。
        3. 可以使用数字,但是不能以数字开头。
        4. 不能可以使用特殊字符,除了下划线。
        5. 常量命名要有意义
        6. 常量名严格区分大小写。
      • 常量值:
        定义常量时时,在PHP版本>7.3之后可以使用除对象之外的任意类型。在PHP<5.4版本之前,常量值仅限标量。
      • 常量的特点:
        1. 常量一旦定义不可以在改变其值。
        2. 常量习惯上使用大写。
        3. 常量如果声明就优质,如果不声明就将该常量名称当做字符串处理。
    3. 声明方式2:const 关键字声明

      • 语法格式:const 常量名 = 常量值
      • 该方法只有声明方式和define不同,其他规则都相同。
    4. 系统自带的魔术常量(了解)

      • FILE 表示当前文件相对于系统的绝对路径
      • LINE 表示当前常量所在的行
      • FUNCTION 可以在函数中获取当前函数的名称
      • CLASS 表示当前常量所在的CLASS(类)的名称
      • METHOD 表示当前方法所在的类和方法名称
      • 注意:以上所有__终究没有空格,是两个下划线。
    5. 常量相关的几个功能(了解)

      • constant() 获取常量值的功能

      • 格式:返回结果 = constant(‘常量名’)

      • 注意:该功能一般是当常量名时一个字符串类型的时候,使用该功能可以获取到对应的常量值。

      • get_defined_constants() 获取当前定义的所有常量集合 返回一个数组。

      • defined 检测常量是否被定义,返回一个布尔值,如果被定义返回true,如果未定义返回false

      • 格式:返回结果 = defined(‘检测的常量’)

四、PHP中的运算符


1.运算符的介绍

  1. 什么是运算符
          • / 等 用于运算的符号 就是运算符
  2. 什么是运算
    • 由一个数值或者多个数值经过变换得到一个新值的过程就是运算

2.运算符的分类

  1. 算术运算符

    • 算术运算符包括 + – *(乘法) /(除法) %(取余或者求模) ++(自增运算符) –(自减运算符)
    • 自增自减运算注意事项
      1. 自增或者自减运算就是在原值的基础上进行+1或者-1的操作
      2. 在进行自增或者自减运算时,运算符号可以在变量前,也可以在变量后,但是意义不同。
      3. 如果自增自减运算符号在变量前,表示先将当前变量进行+1操作,然后在使用该变量。如果符号在变量后,表示先使用该变量在进行自增或者自减运算。
      4. 自增自减运算对布尔值无效,一般也不用于数组、对象、资源等类型,只用于整型和浮点型。
      5. null可以进行自增运算,不能进行自减运算。
  2. 字符串运算符

    • 字符串运算符就是用来连接字符串的符号,在PHP语言中就是英文状态下的点(.)
    • 字符串只有连接运算没有截取等其它运算。
  3. 赋值运算符

    1. = 普通赋值运算符,为变量和常量赋值
    2. += 加法赋值运算符 $no += 5 完整格式 $no = $no + 5
    3. -= 减法赋值运算符
    4. *= 乘法赋值运算符
    5. /= 除法赋值运算符
    6. %= 取模赋值运算符
    7. .= 连接赋值运算符
  4. 比较运算符

    1. 大于

    2. < 小于

    3. = 大于等于

    4. <= 小于等于

    5. == 等于 只判断值 不判断类型

    6. != 不等于 值不相等就是真

    7. === 全等于 判断值和类型都相等

    8. !== 非全等于 除了全等于都是非全等

    9. <=> 比较两个表达式,如果表达式1小于表达式2 返回-1 如果等于 返回0 如果大于 返回1;

  5. 逻辑运算符

    1. 逻辑与运算

      • 运算符 && 或者 and 推荐使用 &&
      • 两个值都为真时,结果为真,其余情况都为假。
      • 例子:猿叔洗脸
      1. 洗了左脸(true),没洗右脸(false).结果没洗完脸(fasle)
      2. 洗了右脸(true),没洗左脸(false).结果没洗完脸(fasle)
      3. 没洗左脸(false),没洗右脸(fasle),没洗脸(false)
      4. 洗了左脸(true),洗了右脸(true),洗完脸了(true)
    2. 逻辑或运算

      • 运算符 || 或者 or 推荐使用 ||
      • 两个值都为假时,结果为假,其余情况都为真。
      • 例子:猿叔家的猿婶丢了
      1. 我找到了猿婶(true),猿叔没找到(false),结果 找到了猿婶(true)
      2. 我没找到(false),猿叔找到了(true),结果 找到了猿婶(true)
      3. 我(true)和猿叔(true)一起找到了猿婶,结果找到了猿婶(true)
      4. 我没找到猿婶(false),猿叔也没找到猿婶(false),猿婶成功跳脱了猿叔的魔掌 与老王私奔(false)
    3. 逻辑非运算

      • 逻辑非运算符 ! 或者 not
      • 真变假,假变真。
      • 例子:
        纯爷们(true) 被砍了一刀就不那么纯了(false)
    4. 逻辑异或运算

      • 运算符 xor
      • 相同为假,不同为真。
      • 例子:中国婚姻
      • 纯爷们(true) + 纯爷们(true) -> 不能结婚(false)
      • 妹纸(false) + 妹纸(false) -> 不能结婚(fasle)
      • 纯爷们(true) + 妹纸(false) -> 可以结婚(true)
      • 妹纸(false) + 纯爷们(true) -> 可以结婚(true)
  6. 位运算符 (了解) (加密、 权限)

    1. 按位与 符号 &
      • 在二进制的基础上对每一位进行逻辑与运算
    2. 按位或 符号 |
      • 在二进制的基础上对每一位进行逻辑或的运算
    3. 按位异或 符号 ^(抑扬符) 英文状态下 shift+6
      • 在二进制的基础上对每一位进行逻辑异或运算 相同为假 不同为真
    4. 左移 << 在二进制的基础上将所有二进制数值向左移动指定位数,移动之后空白位补0。
    5. 右移 >> 在二进制的基础上将所有二进制的数值向右移动指定位数,移动之后移出的数将被删除。
    6. 按位非 符号 ~ 设计到反码 补码问题 (不讲)
  7. 其它运算符

    1. @ 错误抑制符
      • 作业:用于屏蔽单行错误,对于多行无效。但是尽量少用@符号 进行错误屏蔽,效率低
    2. 三元运算符 ? :
      • 格式:变量 = 条件 ? 真值 : 假值
      • 作用:根据条件的真假决定取真值还是假值
      • 如果格式中的条件结果为true,那么将将真值赋值给变量,
      • 如果格式中的条件结尾为false,那么就将假值赋值给变量。
    3. null运算
      • 格式:
        1. $result = $xxyd ?? ‘你好呀’;
          • 如果设置了变量$xxyd的值那么就将变量$xxyd 赋值给 $result,如果没设置,将??后面的字符串赋值给变量
        2. $a ??= ‘a’
          • 如果设置了$a 直接使用$a,如果没设置$a 那么就将??=后面的字符串赋值给$a
        3. $u = $a ?? $b ?? ‘abc’
          • 如果设置了$a 就将$a的值赋值给$u,如果没有设置$a,将判断是否设置$b,如果设置,那么就将$b的值赋值给$u,如果没设置将最后的字符串赋值给$u
    4. -> 对象成员访问符号 讲面向对象的时候在讲
    5. => 数组元素访问符号 将数组的时候在讲
    6. , 声明多变量的分隔符 (了解,一般在循环中使用)
    7. “ 反引号 系统命令执行符
    8. 关于运算优先级
      • 解决运算优先级的问题,推荐使用();

五、流程控制

1. 了解流程控制

  1. 什么是流程控制

    • 对程序代码执行流程的控制就叫流程控制
  2. 什么是流程?

    • 程序执行的顺序就是流程。
  3. 流程的分类

    • 顺序结构- 程序自上而下的执行过程既是顺序结构,所有的程序默认都是顺序结构

    • 分支结构 (选择结构)

      • 程序在执行的过程中,往往要根据不同的运行结果做出不同的选择,或者忽略部分代码的执行,这种执行结构就叫分支结构。
    • 循环结构

      • 简单的说就是让计算机重复执行一件事或者说重复执行一段代码。
  4. 分支结构分类

    • 单项分支结构
    • 双项分支结构
    • 多项分支结构
    • 巢状分支结构

2. 单项分支结构

  1. 单项分支结构
    • 格式1:
      if(条件表达式)
      一条PHP代码

    • 如果条件表达式为真,将执行if之后的第一条PHP代码。

    • 如果条件表达式为假,将不会执行if之后的第一条PHP代码。

    • 注:该格式的分支结构仅能控制if之后的第一条PHP语句

    • 格式2:
      if(条件表达式){
      一条PHP代码
      二条PHP代码
      ……
      }

    • 该格式的分支结构,可以控制if之后的一个完整的代码块{}区域内的所有内容。

3. 双项分支结构

  1. 双项分支结构
    • 格式1:
      if(条件表达式)
      一条PHP语句
      else
      一条PHP语句
    • 双项分支就是在单项分支的基础上增加了一个else分支
    • 如果条件表达式结果为真,将执行if后面的第一条PHP代码
    • 如果条件表达式结果为假,将执行else后面的第一条PHP代码
    • if后面的代码称之为if区间 或是 真区间。
    • else后面的代码称之为else区间或者叫假区间
    • 格式2:
      if(条件表达式){
      一条PHP语句
      二条PHP语句
      ……
      }else{
      一条PHP语句
      二条PHP语句
      ……
      }
    • 推荐使用又{}得格式版本,带{}代码的可读性高,不容易混淆
    • 格式2的功能已经包含了格式1的功能,{}内可以写一条php语句

4.多项分支结构

  1. 多项分支结构

    • 格式1:
      if(条件表达式){

      }else if(条件表达式){

      }elseif(条件表达式){

      }else{

      }

    • elseif关键词可以写成else if 也可以写成elseif,都是合格的语法,每一个if()内都要有一个条件表达式

    • 格式2:
      switch…case 格式
      switch(变量){
      case 值:
      php语句
      [break];可写可不写
      case 值;
      PHP语句
      [break]
      default:
      php语句
      }

    • 注意:

      1. switch…case 的分支结构和if..elseif..else的分支结构并不相同
      2. switch…case的分支结构可以同时执行多条分支(分支中没有break语句的出现,那么将从当前case开始一直执行到最后)
      3. 如果使用switch…case实现多项分支的单项选择,可以为每一个分支添加break语句即可。
      4. switch…case的取值需要从字符串和整型以及布尔值找那个选取,不推荐使用浮点型不可以使用复合数据类型和特殊数据类型。
      5. switch…case 只适用于精确值的判断,不适用于范围值的判断。
    • 注意:
      书写代码一定要注意缩进格式,增加代码的可读性。

5. 巢状分支结构

8.巢状分支结构
– 巢状分支结构既是在双项分支或者多项分支结构的真区间或者假区间再次使用分支结构,这类结构统称巢状分支结构。

6. 循环结构

  1. 循环
    • 就是让计算机重复执行一件事!

1. while循环

  • 格式:
    • while(条件表达的){
      //循环体
      php代码
      [自增或者自减得条件]
      }
      注意:书写循环结构时一般都需要自增或者自减条件。

2. do…while循环

  • 格式:

    • do{
      循环体
      [自增自减条件]
      }while(条件表达式);
  • do…while 和 while循环的区别

    1. while型循环的每一次循环体的执行都要依据while条件表达式的结果进行约束
    2. do…while除了第一次之外,剩下每次的循环体的执行都要受while条件表达式结果的约束

3. for循环

  1. 唯一一个计数型循环(效率高),应为从开始就知道自己要循环多少次
  2. 格式:
    for(表达式1;表达式2,表达式3){
    循环体(PHP语句)
    }

    • 表达式1 表示初始化变量
    • 表达式2 表示循环退出的条件(条件表达式)
    • 表达式3 自增自减条件
  3. for循环执行格式
    1. 执行表达式1 对变量初始化。
    2. 执行表达式2 判断是否符合循环条件。
    3. 如果表达式2 符合执行循环的条件,那么就执行{}内的代码(循环体)
    4. 执行表达式3 自增或者自减条件
    5. 执行表达式2 判断是否符合循环条件
  4. for循环和while循环的区别:
    1. 类型问题
      • 计数型循环只有for循环
      • 布尔值循环:while循环、do…while循环以及foreach循环
    2. 效率问题
      • for循环要高于while循环,for循环属于计数型循环,而while循环数bool型循环

7. 流程控制的其它语句

1. break语句

  • 作用:可以在switch中使用break来终止分支结构的执行
    可以在任何循环结构中用break来终止循环操作
  • 注意:break后面可以跟数值参数,break 1 表示的意思跟break一样。如果在循环中设置break 2 表示用来终止两层循环(嵌套循环)

2. continue语句

  • 作用:在循环结构中用来终止本次循环,开始下一次循环。
  • 注意:continue后面可以跟数值参数,continue 1 表示的意思和continue一样,如果在循环中设置 continue 2 表示跳转到外层继续循环(嵌套层)
版权声明:本文为技术小白丁原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jnba/p/16133368.html