2.2常量+变量详解+变量传值+数据类型

 

 

量就是内容,就是数据。

变量

1. 什么是变量?

可以被改变的量

php中的变量规则

1. 必须以$符号开始,后面跟变量名

2. 变量名:以字母或者下划线开始,后面可以跟数字

3. php中可以使用中文变量

clip_image002

4. PHP中变量区分大小写

clip_image004

注意:PHP语言是一种弱类型语言,php中的变量可以存储任意类型的数据。

2. php定义语法

$变量名 = 值(没有数据类型限制);

clip_image006

3. 使用php变量

1. 凡是需要使用变量的地方,可以直接使用$符号后跟变量名

2. 变量在使用之前必须先定义好(赋值)

clip_image008

4. 变量的增删改查

删除变量需要使用到php的一个函数:unset

语法:unset(变量);

clip_image010

常量

1. 什么是常量?

常量是一个经常用,但是不会改变的量。

2. 常量规则

a) 定义规则:不是通过$符号定义,而是通过define函数定义

语法:define(‘常量名’,常量值);

clip_image012

b) 语法规则:不需要$符号,其他规则类似,通常,常量的定义都是大写字母和下划线

c) 使用规则:常量一经定义不可修改

d) 常量的语法规则比变量要简单(宽松)

3. 使用常量:直接使用常量名字即可

clip_image014

4. 修改常量:不允许

直接修改

clip_image016

使用define重新定义

clip_image018

删除常量

clip_image020

5. 松散常量

定义

clip_image022

使用:特殊字符组成的常量是不能直接使用的,要使用必须通过constant函数实现

语法:constant(‘常量名’);

clip_image024

常量的使用

1. 一个经常要用,但是不允许改变的数据,用常量保存

2. 常用往往用于访问限制:判断函数:defined(‘常量名’),如果一个常量被定义过了,返回true,如果没有定义过返回false

clip_image026

系统预定义变量

系统已经定义好的,用户可以直接使用的变量。(用户也可以修改)

$_POST:用户接收用户从浏览器使用post方式提交的所有数据,是一个数组

$_GET:接收浏览器以get方式提交的所有数据,是数组

$_REQUEST:接收浏览器post或者get或这个cookie数据,也是数组

$_FILES:浏览器文件上传的数据

$_SESSION:会话技术之一session的数据

$_COOKIE:会话技术之一cookie的数据(浏览器携带到服务器)

$GLOBALS:全局变量的数组(所有的全局变量都可以在该数组中找到)

$_SERVER:服务器信息和浏览器信息

如何查看一个数组?var_dump(数组)

clip_image028

访问单个数据

clip_image030

作业:将$_SERVER中认为有用的数据给整理一遍

$_ENV:环境

预定义常量

系统已经定义好的常量

PHP_OS:当前PHP运行的操作系统

clip_image032

PHP_VERSION:当前PHP版本

clip_image034

PHP_INT_SIZE:当前PHP中整型所占用的内存空间(字节为单位)

clip_image036

PHP_INT_MAX:当前php中能够表示的最大整型数值

clip_image038

魔术常量

表示方法是以双下划线开始和双下划线结束

魔术常量在不同的位置代表不同的数据

__FILE__:当前文件的绝对路径,包含文件名

clip_image040

__LINE__:当前行的行号

clip_image042

__DIR__:当前文件的绝对路径,不包含文件名

__FUNCTION__:当前函数的名字(只能在函数内部使用)

clip_image044

__METHOD__:当前方法的名字(只能在方法内部使用)

变量和常量内存示意

内存指的是在系统运行的时候,RAM。

内存分为多个部分:栈,堆区,代码段,数据段

栈:程序能直接操作的唯一内存,栈比较小,但是速度较快

堆:一大块连续的内存空间,程序不能直接操作,空间大,地址连续,但是效率低

代码段:专门存放代码的内存地址,系统会根据代码段里存储的代码逐行的执行代码

数据段:存放数据的地方,数据段又可以分为多个部分

全局区:存放全局数据和局部数据

静态区:存放静态变量和常量

php代码执行过程

clip_image046

简单代码执行内存分析

clip_image048

变量传值

变量传值方式分为两种:值传递和引用传递

值传递

将一个变量的值复制一份,然后传递给另外一个变量,内存中会存放两份数据。

clip_image050

引用传递

将变量的所指向的内存地址赋值给另外一个变量。

语法:$a = &$b;

clip_image052

内存分析

clip_image054

可变变量

变量可以变,变量所对应的值刚好是另外一个变量的名字,再加上一个$符号之后,就可以获取到对应变量的值。

clip_image056

数据类型

数据类型是系统根据自然界中人们所对事物的分类,在系统内部的一种体现。

php中对数据类型如何分类?

标量数据类型(基本),复合数据类型,特殊数据类型

php中的数据类型都是用来规范数据本身而不是变量本身(PHP是弱类型语言)

标量数据类型

标量数据类型又分为四类:整型,浮点型,布尔型,字符串型

整型

用来描述整数,int或者integer

$a = 100; //a是一个整型变量(a的值是一个整型数据)

可以使用变量保存其他进制数据:八进制和十六进制

$num1 = 0777;

$num2 = 0xffff;

clip_image058

强制按进制进行输出:printf

语法:printf(“输出字符串携带输出格式”,要输出的参数列表)

clip_image060

PHP中的整型占4个字节32位,最大数值是21亿多,超出php能表示的最大范围之后,数据类型会变成浮点型。

clip_image062

浮点型

float或者double关键字

float:占用4个字节,单精度,能够保证的有效的精确数位数比较小,大概是7位左右,能表示最大范围大概是10^38

double:占用8个字节,双精度,有效的精确数位数比较大,大概是15位左右。

在php中没有单精度,都是双精度(占用8个字节)

clip_image064

超过精度部分会继续四舍五入

clip_image066

整型与浮点型存储数据的变化

clip_image068

整型与浮点数的应用

需要精确的表示一个数值的时候,但是数值又不是很大的情况下使用整型

需要一个大概的值,但是数据量又很大的情况下使用浮点型

布尔型

布尔型就只有两个结果:true和false,通常布尔类型都是用于判断。使用bool或者Boolean

clip_image070

大部分的数据进行类型转换后都会变成布尔的true,但是有少部分是false

FALSE,0,0.0,’’,’0’,空数组,null值

clip_image072

字符串型

用一系列字符来表示的数据。

定义字符串类型的方式有三种:单引号,双引号和定界符

单引号:只能解析较少的转义字符:’,\

双引号:能解析较多的转义字符: ”,解析变量

clip_image074

定界符:以<<<定界符标识,中间是字符串内容,最后跟定界符标识结束

clip_image076

定界符使用规则

1. 左尖括号后必须跟定界符标识,标识的右边不能有任何内容包括注释和空格

2. 定界符内部不能写注释:写了也没用,会被照样输出

3. 右定界符必须顶格:靠近最左边

4. 右定界符的右边不能有任何多余的内容:包括注释和空格

定界符结构:定界符本身模拟的是单引号和双引号

定界符分为两种:heredoc,nowdoc

heredoc:模拟的是双引号

nowdoc:模拟的是单引号,nowdoc就是给左定界符加上单引号

clip_image078

复合数据类型

复合数据类型:数组和对象

特殊数据类型

空类型(null)和资源

NULL:空数据类型

变量被unset掉

变量直接赋值为null

资源:PHP操作外部数据(mysql连接,mysql结果集,文件操作…)

作业:

1. 定义两个变量:$a = 10,$b = 20;使用三种方式实现两个变量的交换。$a = 20,$b = 10。

原文地址:https://www.cnblogs.com/lifushan/p/5285760.html