![![]
基础复习
1. 计算机是如何表示信息的
- 采用二进制: 0,1
- 无论是数据, 还是操作数据的代码, 都采用二进制表示
0100 1000
, 是数据,还是代码? 数据表示:48H
,代码表示赋值操作
2. 计算机是如何区分数据和代码的
- 任何需要执行的程序, 都要事先保存到计算机内存中
- 内存,可以想象成宾馆中的房间, 由房号和房间中的客人二部分组成
- 将内存大体上分为二部分, 代码段, 数据段,将数据与代码分别存入
- 在访问内存的时候, 通过操作系统提供的保护机制,防止越界访问
3. 数据与代码在程序中是如何体现的
//数据, 变量表示, 放在数据段
$site = 'php.cn';
// 代码, 函数表示, 放在代码码
function get_site($webSite)
{
return $webSite . ' 欢迎您';
}
// 调用执行, 指令一条一条的进入到CPU中
echo get_site($site);
程序到内存的映射示意图
4. 代码的执行流程控制
- 任何一门编程语言, 都会有三种流程控制: “顺序”, “分支”, “循环”
- 顺序: 是最基本的执行流程, 执行顺序与源码的书写顺序一致
- 分支: 是程序具有人工智能最重要的工具, 可根据预置条件判断代码片断是否需要执行
- 循环: 是计算机最擅长的领域, 计算机从开机到关机循环无处不在,整个程序就是一个循环
4.1 分支
if
: 单分支if - else
: 双分支if - elseif - else
: 多分支switch - case - break
: 多分支简化方案
4.2 循环
for
: 计数式foreach
: 遍历数组while
: 入口判断do - while
: 出口判断
Tips:
- 顺序执行是默认,也是最容易理解的形式, 不再实例演示
- 分支和循环结构,可以相互嵌套, 从而完成一些复杂的业务逻辑工作
5. 为什么数据要有类型
5.1 操作的要求
- 只有先明确了数据的类型,才能定义允许的操作
- 例如,数值型允许算术四则运算,而字符中类型不允许
5.2 存储的要求
- 只有先明确了数据类型, 才能正确分配内存空间
- 很明显,数值型和字符串型,布尔型,它们占用的存储空间是不同的
6. 数据类型有哪些
- 基本类型: 数值(整数/实数), 字符串类型, 布尔类型
- 复合类型: 数组, 对象
- 特殊类型: 资源(文件,数据库连接等), null
特殊类型的操作相对简单,我们重点放在基本和复合类型上
7. 基本数据类型的特点与操作
- 基本数据类型就三种: 数值,字符串, 布尔值
- 字符串必须使用定界符表示: 单引号/双引号
- 单引号: 纯字符串
- 双引号: 除纯字符串外, 还能解析变量和转义特殊字符
- 如果在字符串中引用了定界符,必须使用反斜线进行转义
- 一旦确定了数据类型, 除了操作方式, “取值范围”和”存储方式”同步确定
取值范围:
- 数值类型取值范围与计算机的字长相关, 64位机器与32位机器肯定不相同
- 字符串类型取值范围与字符编码集相关, utf8与gbk肯定不相同
- 布尔值就简单了,取值范围只有二个值:
true 真
, false 假
存储方式:
- 栈中存储的是定长数据类型, 例如整数4个字符,小数8个字节,布尔型1个字节
- 堆中存储的是不定长数据类型,例如字符串, 但是它的读取入口地址在栈中
- 任何数据类型的地址, 都是固定长度,与机器字长相关,大多是64位,即8个字节
类型说明
- 基本类型: 一个变量名,对应一个具体的值, 所以也叫”单值类型” 或 “标量类型”
- php中弱类型语言, 没有变量声明语句(变量声明意味着内存分配), 所以变量是无类型的
- 所谓数据类型, 准确的讲, 应该特指变量的值的类型
访问方式
echo
: 回显, 无返回值print($var)
: 打印变量, 与echo功能类似 , 但是会有返回值: 1print_r($var, false|true)
: 以更容易理解的方式打印变量(readily易于理解)var_export($var, false|true)
: 输出/返回变量的字符串表示var_dump($var1, $var2...)
: 打印一个或多个变量的结构,包括类型与值
8. 复合类型的特点与操作
- 复合类型只有二种: 数组与对象
- 复合类型: 由零个或多个任意类型的值组成, 所以也叫”多值类型“
存储方式
9. 再聊数组
- 数组: 根据访问成员的键名类型,分为 “索引数组” 和 “关联数组” 二类
- 索引与关联数组的概念非常直观, 生活中的案例随外可见
- 例如你有三个孩子,既可以按出生顺序称呼,例如老大,老二,老三,这就是索引数组
- 你也可以直呼姓名: 例如我的三个女儿, 朱颜, 朱曼, 朱萌, 这就关联数组
- 索引数组, 是按成员在数组中的位置访问, 所以非常依赖访问顺序
- 关联数组, 是直接按成中在数组中的键名访问, 所以不依赖访问顺序,顺序不重要
9.1 索引数组
- 定义:
$user = [101, 'admin', 'admin@php.cn'];
- 访问:
echo
, print_r()
, var_dump()
, var_export()
- 遍历:
for
- 转换:
list()
, implode()
, explode()
9.2 关联数组
- 定义:
$user = ['id'=>101, 'name'=>'admin', 'email'=>'admin@php.cn'];
- 访问:
echo
, print_r()
, var_dump()
, var_export()
- 遍历:
for
- 转换:
list()
, implode()
, explode()
10. 对象初体验
- 面向对象, 是我们认识世界的一种方式, 是对真实世界的一种抽象
- 对象的来源是函数, 是对”面向函数编程”的进化
- 面向对象是一种完全区别与”函数式编程”的全新的编程思想与编程规范
- 任何事物, 都可以认为是由动态的特征和静态的行为构成
- 例如人类, 都会有一些共同的行为,如呼吸,行走,不同的人之间通过动态特征区分
- 到了代码中, 动态特征用属性表示, 静态形为用方法表示
10.1 类与对象
- 类是对象的模板: 类中描述了对象应该有什么, 如何去访问它们?
- 对象是类的实例: 类实例化后,类中成员才会与一个具体的对象绑定
举例:
- 手机是一个类, 华为meta30pro,就是一人手机类的一个实例
- 汽车是一个类, 丰田卡罗拉2019-1.8L-E-CVT旗舰版就是一个汽车类实例
注意:
- 类与对象: 有时界限并不清晰, 在不违背常识前提下,概念混用是允许的
- 有些教程中, 在不影响理解前提下, 直接使用类来代表它的实例来引用类中成员(php.net/pdo)
- 例如, 有一辆汽车撞向你的女友/男友, 这时,你应该用类,还是用类实例来提醒她/他呢?
- 对象与实例: 对象与类的一个具体实例是绑定的,对象与实例称呼可以互换,并不会引起歧义
基本流程:
- 创建类:
class Demo{}
- 添加类成员:
public $property; public function func() {}
- 创建类实例/对象:
$obj = new Demo();
- 访问类成员:
$obj->property; $obj->func();
类与实例的引用
self
: 引用当前类$this
: 引用当前类的实例/对象
总结:通过朱老师的讲解,逐渐明白数组,课堂中的理论与实际结合教学模式很不错!老师辛苦了!
Correcting teacher:天蓬老师
Correction status:unqualified
Teacher's comments:你理解错了, 手写的是大纲, 代码要编写
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!