• 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库
没有结果
查看所有结果
没有结果
查看所有结果

PHP 语法(二)PHP 伪类型、 原码、 反码、 变量类型、 数组、 类型转换、 补码、 资源类型

Mr.Lee 由 Mr.Lee
2018年5月18日
在 PHP, PHP基本语法
0
PHP 核心编程(二)Mysql 扩展、 数据库连接、 笑话增删改查
0
分享
1
浏览

PHP语法(二)

回顾

  1. 编译型和解析型:在程序运行的时候是否会生成中间代码
  2. PHP执行过程:读取源代码——词法分析——语法分析——生成opcode编码——有zend engine去执行
  3. PHP四种界定符

第一种:标准风格:

<?php

?>

第二种:短标记风格,要在php.ini中开启short_open_tag=on

<?

?>

第三种:asp风格,要在php.ini中设置asp_tags=on

<%

%>

第四种:脚本风格

<script language=’php’>

</script>

推荐使用第一种

PHP支持省略结束标记

  1. 注释

    1. 单行注释://和#
    2. 多行注释:/* */
  2. 输出语句

    1. echo:用来输出字符串和数字,可以输出多个值
    2. print:用来输出字符串和数字,可以输出一个值,输出成功返回1
    3. print_r:用来输出数组
    4. var_dump():输出所有的数据类型。

  1. 变量

    1. 概念:变量是内存中的一段空间
    2. 变量的命名规则:

      1. 变量必须以$开头,但是$不是变量的组成部分
      2. 变量名以字母、下划线开头,后面跟的是字母、数字、下划线。
      3. 变量赋值的时候分为值传递和引用传递。&表示获取变量的地址
      4. unset()用来删除变量,删除的是变量名,变量值由垃圾回收机制去销毁。
      5. isset()用来判断变量是否存在。
      6. 预定义变量

        1. $_GET:数组,用来保存http协议GET提交的数据
        2. $_POST:数组,用来保存http协议POST提交的数组
        3. $_REQUEST:数组,用来保存http协议GET和POST提交的数组。如果$_REQUEST获取数据,如果GET提交的和POST提交的数据名一样,默认POST覆盖GET数据。在php.ini中

Request_order=’GP’

        1. $argc:传递给脚本的参数数目
        2. $argv:传递给脚本的参数数组
  1. 常量

    1. 定义常量 define(常量名,常量值,是否区分大小写)和const
    2. 可以使用特殊字符做常量名,调用的时候要使用constant()来调用
    3. 常量一旦定义就不能重复定义,通过defined()函数判断常量是否定义。
    4. 预定义常量:PHP_OS,PHP_VERSION
    5. 魔术常量:__LINE__,__FILE__,__DIR__
    6. get_defined_constants()获取所有的常量

变量数据类型

强数据类型和弱数据类型

弱数据类型:变量的类型取决于保存的值。什么样的值决定什么样的数据类型。

强数据类型:声明一个空间保存什么类型的数据,那么这个空间就不允许保存其他类型的数据。

PHP和JS都是弱数据类型。

数据类型的分类(8种)

标量类型(基本类型)

数据类型

描述

备注

boolean(布尔型)

true和false

integer(整形)

整数,用4个字节保存

范围-231~231-1

float(浮点型)

实数

理论最大值1.8E+308

string(字符串)

单引号和双引号



PHP支持八进制和十六进制的整型

进制转换

进制

缩写

单词

十进制

dec

decimalist

八进制

oct

octonary

二进制

bin

binary

十六进制

hex

hexadecimal

例题

  1. 十进制的整数转二进制(除2反向取余)

  1. 十进制的小数转二进制(乘2正向取整)

  1. 二进制转十进制,个位是2的0次方,往左一次是1次方,2次方,往右依次是-1次方,-2次方

  1. 八进制转二进制:把每位的八进制转成3位的二级制然后合并起来

  1. 十六进制转二进制:把每位的十六进制转成4位的二级制然后合并起来

脚下留心:小数可能在内存中保存的是近似值。

浮点数尽可能不要参与比较

如果浮点数要比较,使用bccomp()函数比较

bccomp()返回0表示相等,1表示左边的数大,-1表示右边的数大

字符串型

  1. 如果字符串中没有变量,双引号和单引号是一样的
  2. 如果字符串中有变量,单引号字符串中的变量不被解析,双引号字符串中的变量要解析。

分析如下代码

解决:

完美解决:

通过添加{ }来解决

{和$必须紧挨在一起

{和$没有顺序,主要挨在一起就行

使用字符串定界符

heredoc

nowdoc

类似于双引号

类似于单引号

字符串定界符注意事项:

  1. 以“<<<”开头
  2. 字符串定界符的命名规则和变量的命名规则一样,不能以数字开头。
  3. 结束定界符必须顶格写
  4. 适用于输出大段文本

字符串的四种声明方法:

  1. 单引号字符串
  2. 双引号字符串
  3. heredoc
  4. nowdoc

转义字符(\)

  1. 将特殊字符转成普通字符 \’ \” \$ \\
  2. 和r,t,n在一起组成新的具有特殊含义的字符

\t \r \n

3、可以用转义字符转义asc||码

ASC||:给键盘上的每个键都编一个对应的数字编码,成为ASC||码。ASC由7位的二进制数组成,最多可以编128个键。

字符比较其实比较的是字符的ASC||码。 A<a a-A=32

填空题:已知A=65,求d=?

d=a+3=A+32+3=65+35=100

数组

数组是内存中一段连续的空间,通过下标来区分每个元素

数组的声明

例题

关联数组中,一个下标对应一个值,称为键值对。

通过“=>”符号给关联数组赋值。

注意:不是所有的数字做下标的都是索引数组,如果做下标的数字不是表示值的位置,这也是关联数组。

注意:以数字做下标的情况下,后面的元素在前面元素的下标上递增1.

例题:写出如下下标




数组下标的思考

在一般情况下,数组下标就是数字和字符串。如果是其他情况会怎么样?

extract()

从数组中将变量导入到当前的符号表

数组的分类

  1. 按照元素的键值关系来分类

    1. 索引数组:通过元素的位置坐下标
    2. 关联数组:元素的值和下标没有位置上的关系。关联数组中元素顺序与下标无关。
  2. 按照数组的结构来分类:

    1. 一维数组
    2. 多维数组

注意:在PHP和JS中,二维数组不一定是二维表。

资源类型(resource)

  1. PHP引用的外部数据都是资源类型
  2. 资源类型只能获取,不能创建
  3. 资源也是有类别的,比如有链接资源,文本流资源

NULL类型

  1. 表示没有
  2. NULL是不区分大小写的,写null也是一样的。

PHP 伪类型

PHP除了上面8种原始数据类型外,还提供了3种伪类型

混合类型(mixed)

mixed 说明一个参数可以接受多种不同的类型

number

callback

callback表示回调函数。在某种条件下,计算机自动调用的函数称为回调函数。具体在后面讲解。

类型转换

数据类型是数据在内存中的存储结构,并在此结构上的操作运行的集合。这就意味着不同的数据类型的运算操作会不一样,不同的数据类型之间运算首先先要组成相同的数据类型,还个转换有可能是计算机自己转换的。我们要注意这个数据类型的转换。

自动转换

在计算机期望类型和实际类型不符的条件下自动转换成计算机期望的类型


强制转换

int:整数

bool:布尔型

float:浮点型

string:字符串型

其他类型和bool之间的关系

  1. 数字转布尔:0为假,非0为真
  2. 字符串,数组转布尔:如果一个字符串你们转成0或者转成空就为false,否则为true。

<?php

//整数转布尔

var_dump((bool)1);echo ‘<br>’; //true

var_dump((bool)0);echo ‘<br>’; //false

var_dump((bool)-1);echo ‘<hr>’; //true

//浮点数转布尔

var_dump((bool)1.1);echo ‘<br>’; //true

var_dump((bool)0.0);echo ‘<br>’; //false

var_dump((bool)-1.1);echo ‘<hr>’; //true

//字符串转布尔

var_dump((bool)’abc’);echo ‘<br>’; //true

var_dump((bool)’0′);echo ‘<br>’; //false

var_dump((bool)’0.0′);echo ‘<br>’; //true

var_dump((bool)’00’);echo ‘<br>’; //true

var_dump((bool)”);echo ‘<br>’; //false

var_dump((bool)’null’);echo ‘<br>’; //true

var_dump((bool)’false’);echo ‘<hr>’; //true

//数组转成布尔

var_dump((bool)array());echo ‘<br>’; //false

var_dump((bool)array(1));echo ‘<br>’; //true

var_dump((bool)array(false));echo ‘<br>’; //true

var_dump((bool)null);echo ‘<br>’; //false

与类型有关的函数

能够返回的值有

例题

is_XXX系列,用来判断变量是否是某种数据类型

原码、反码、补码

原码

原码:数字转成二进制,这个二级制数就是原码

比如5对应的二进制是101。101就是5的原码。

反码

反码就是原码的相同位取反,0变1,1变0.

补码

  1. 正数的原码,反码,补码是一样的。
  2. 负数的反码:符号位不变,其他位取反。最高位就是符号位,正数是0,负数是1。
  3. 负数的补码:补码=反码+1

例题:

X=5

X[原]=x[反]=x[补]=0101

X=-5

X[原]=1101

X[反]=1010

X[补]=1011

为什么计算机要使用补码运算?

  1. 在补码中+0和-0表示方法一样
  2. 计算机的运行有高位溢出原则

为什么+0和-0补码是一样的?

+0的反码是 +0[反]=0000

-0[原]=1000 -0[反]=1111 -0[补]=10000 高位溢出后 0000

  1. 利用补码运算,可以将减法变成加法来运算

比如:4-1

=4+(-1)

=0100[原]+1001[原]

=0100[反]+1110[反]

=0100[补]+1111[补]

=10011[补]

=0011[补] 高位溢出

=0011[原]

=3

例题:1-4

=1+(-4)

=0001[原]+1100[原]

=0001[反]+1011[反]

=0001[补]+1100[补]

=1101[补]

=1100[反]

=1011[原]

=-3

标签: PHP 伪类型原码反码变量类型数组类型转换补码资源类型
上一篇文章

PHP 语法(三)判断语句、 包含文件、 循环语句、 运算符

下一篇文章

PHP 语法(一)定界符、 执行原理、 执行过程、 语法、 输出语句、 变量、 常量、 编译型、 解释型

下一篇文章
PHP 核心编程(二)Mysql 扩展、 数据库连接、 笑话增删改查

PHP 语法(一)定界符、 执行原理、 执行过程、 语法、 输出语句、 变量、 常量、 编译型、 解释型

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Search

没有结果
查看所有结果

About Me

个人随笔

Winston Lee

Programmer

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Winston Lee

About Me

Hello & welcome to my blog! My name is Winston Lee and am a programmer and am keen on sharing.

Categories

  • AJAX
  • BootStrap
  • CodeIgniter
  • CSS
  • DedeCMS
  • GIT
  • HTML
  • Javascript
  • Jquery
  • Laravel
  • Laravel在线教育平台
  • Linux
  • Memcache
  • MongoDB
  • MVC
  • Mysql
  • Nginx
  • Node
  • PDO
  • PHP
  • PHP7
  • PHP基本语法
  • PHP核心编程
  • Redis
  • Smarty
  • Socket
  • SVN
  • Swoole
  • TP3.2
  • TP3.2商城
  • TP5.0
  • TP5.0商城
  • XML
  • Yaf
  • Yii
  • Yii手机直播
  • 二次开发
  • 优化方案
  • 前端技术
  • 前端框架
  • 后台框架
  • 基本操作
  • 微信公众号
  • 数据库
  • 未分类
  • 混合APP
  • 源码Blog项目
  • 版本控制
  • 环境搭建
  • 移动端开发
  • 网站优化
  • 资料
  • 面向对象
  • 面向对象编程
  • 页面静态化

Tags

DOM Json RBAC 事件 传参 函数 分页 判断语句 匿名函数 变量 图片上传 存储过程 安装 对象 封装 属性 接口 控制器 数据库操作 数据类型 数据表 数组 文件上传 无刷新分页 权限 标签 模型 正则 流程控制 目录结构 算法 类 索引 继承 缩略图 表关系 视图 路由 运算符 选择器 递归 配置 错误处理 页面静态化 验证码
  • 首页
  • 前端
  • 前端框架
  • PHP
  • 数据库
  • 优化
  • 后台框架与实战
  • 移动开发
  • 二次开发
  • Linux
  • 版本控制
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3

没有结果
查看所有结果
  • 首页
  • 前端
    • HTML
    • CSS
    • Javascript
    • XML
    • AJAX
  • 前端框架
    • BootStrap
    • Jquery
  • PHP
    • 语法
    • 核心
    • 面向对象
    • PHP7
    • Socket
    • Swoole
  • 数据库
    • Mysql
    • Redis
    • Memcache
    • MongoDB
  • 优化
    • 优化方案
    • 页面静态化
    • Nginx
  • 后台框架与实战
    • Smarty
    • 源码Blog
    • TP3.2
    • TP3.2商城
    • TP5.0
    • TP5.0商城
    • Laravel
    • Laravel在线教育平台
    • Yii
    • Yii手机直播
    • CodeIgniter
    • Yaf
  • 移动开发
    • 微信公众号
    • 混合APP
  • 二次开发
    • DedeCMS
  • Linux
    • 基本操作
    • 环境搭建
  • 版本控制
    • GIT
    • SVN
  • Node.js
  • 资料库

沪公网安备31011502400873 | 沪ICP备2024050435号-3