博客列表 >21-2 朱老师ph数组

21-2 朱老师ph数组

风清扬
风清扬原创
2019年12月03日 00:01:571053浏览

![![]

基础复习

1. 计算机是如何表示信息的

  • 采用二进制: 0,1
  • 无论是数据, 还是操作数据的代码, 都采用二进制表示
  • 0100 1000, 是数据,还是代码? 数据表示:48H,代码表示赋值操作

2. 计算机是如何区分数据和代码的

  • 任何需要执行的程序, 都要事先保存到计算机内存中
  • 内存,可以想象成宾馆中的房间, 由房号和房间中的客人二部分组成
  • 将内存大体上分为二部分, 代码段, 数据段,将数据与代码分别存入
  • 在访问内存的时候, 通过操作系统提供的保护机制,防止越界访问

3. 数据与代码在程序中是如何体现的

  1. //数据, 变量表示, 放在数据段
  2. $site = 'php.cn';
  3. // 代码, 函数表示, 放在代码码
  4. function get_site($webSite)
  5. {
  6. return $webSite . ' 欢迎您';
  7. }
  8. // 调用执行, 指令一条一条的进入到CPU中
  9. 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功能类似 , 但是会有返回值: 1
  • print_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: 引用当前类的实例/对象

总结:通过朱老师的讲解,逐渐明白数组,课堂中的理论与实际结合教学模式很不错!老师辛苦了!

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议