作用域和数组.docx
- 文档编号:28826036
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:21
- 大小:956.42KB
作用域和数组.docx
《作用域和数组.docx》由会员分享,可在线阅读,更多相关《作用域和数组.docx(21页珍藏版)》请在冰豆网上搜索。
作用域和数组
昨日回顾
PHP的执行过程
源代码->机器可执行的指令->执行
编译过程:
词法解析、语法解析结果是可执行的文件
执行:
可执行文件的执行本质就是对内存的操作
根据程序语言中不同的关键,有不操作,
变量(全局变量):
在编译不会对内存有影响
function:
在编译的时候会对内存有影响,在执行时首先查检是否有形参,如果有,看有没有默认值。
再看实际调用的语句,有没有传递实参。
在栈开辟一个专属于函数的内存空间。
会在函数专属的内存开辟一个空间,存储形参名,要在数据段的全局区开辟空间存储数据,再将存储数据的空间地地,传递给栈区的形参。
静态变量:
编译时就会对内存有影响:
在数据段的静态区存储数据静态变量的数据,静态变量指向函数。
执行时,会在栈区中函数的专属空间开辟一个内存空间,存储变量名,之后再将,静态区中数据100的物理地址,传栈区中的变量。
//思路:
冒泡排序法
第1步,找出最大的一个数,存储在数组的最后比较次数(数组的长度-1)
第2步,找出第2大的数,存储在数组的倒数第2个位置(在第)比较次数数组长度-2)
调换两变量的值:
方式一:
借助于第3个变量
方式二:
利用和减一个等于另一个
方式三:
利用异或
示例:
作用域
PHP作用域指的变量的作用范围。
全局作用域
在函数外部定义的变量就叫全局变量,其作用域是全局作用域
局部作用域
在函数内部定义的变量就叫局部变量,其作用域是局部作用域。
提示:
php有很清晰的作用域
在函数内部使用外部的变量。
方法1:
使用$GLOBALS(此函数没有作用域问题,但有脚本限制$_SESSION)
示例:
方法2:
将全局变量,作为实参传递到函数内部
方法3:
使用global关键字声明
原理:
在函数内部使用global声明一个变量时,首先会在全局找,是否有$v1的变量,有的话,将此变量的内存址传递函数内部的同名变量。
(global相当于,向函数内部的同名变量传递了一个物理地址)
在函数外部访问函数内部
方法1:
return
方法2:
使用global声明
注意:
global只能声明,不能赋值
数据类型的转换
在PHP中,有多种运算符,每一种运算的操作数据都要与运算相对就
算术运算,操作的数据是,数值类型,
字符串运算符,操作的数据是字符串
只有要相同数据类型才能进行直接运算,否则会进行转换。
1、自动转换
php在进行运算时,不是与运算符相对应的数据类型会自动转换。
此种转换是系统自动完成。
2、强制转换
在所需要转换的变量前使用小括号'()',并且在括号中输入目标数据类型
语法:
(目标数据类型)$变量;
目标数据类型:
int或integer
bool或boolean
string
float
array
object
其他数据类型转换为整型
其他数据类型转换为字符型
其他数据类型转换为布尔型
3、使用转换函数
intval();
stringval();
floatval();
GetType();用于获取变量的数据类型
SetType();用于设置变量的数据类型
示例:
伪类型
伪类型:
mixed混合数据类型
void空没有返回值
文件的引入
PHP会将多个脚本文件所使用的到的相同的代码,会单独生成(封装)成一个脚本文件,在使用此功能代码的,脚本文件中引用,即为文件的引入。
文件引入
语法:
方式1:
require
require_once
方式二:
include
include_once
根据引用的文件与被引入文件的逻辑上可以将引入分为
前向引入:
在当前脚本中使用另一个脚本中的功能性的功能。
后向引入:
当前脚本中有数据给另一个文件使用。
示例:
当前文件:
03nxn.php文件
03temp.html文件
文件引入的区别
require
特点:
在引入文件的过程中,如果出错,那么直接结束当前脚本的执行。
include
经验法则:
●一般require引用功能性的代码(此种功能性的代码,在逻辑上引入其后的代码,依靠于被引入文件的代码)例如:
数据库的连接,
●一般require会书写在第一行。
●一般include用于引入模板性的文件
●include多用于分支结构
●如果被引入的文件发生错误,对引入文件的影响不大,那么使用include
once的区别:
没有Once的语法,每遇到一个require或include就会引入一次文件。
有once的语法,只保证引入一次。
示例1:
03nxn.php文件
示例2:
引入文件的原理
示例:
引入文件:
03demo_require.php文件
被引入文件:
03nxn.php
运行结果
说明:
首先03demo_require.php文件,require('03nxn.php')语句,并不会被执行
当03demo_reuiqre.php文件,编译后,执行时,当执行到nxn()语句时,会在内存中还没有nxn()函数,所以报错。
错误就是由引入文件与被引入文件编译不是同步的(先编译引入文件的源代码,在执行引入文件的编译后的代码时,则引入被引入文件,被引入文件才会被编译。
)
当执行到require('03nxn.php')语句时,才会引入03nxn.php文件源代码,再对03nxn.php文件中的源代码进行编译。
编译之后才执行
文件的路径
绝对路径
就是以磁盘根目录(盘符)开始进行一级级目录指向文件的形式即为绝对路径
磁盘绝对路径:
如:
D:
\php_folder\20151027\20151206\code\03demo_require.php
D:
\php_folder\20151027\20151206\code\
网络绝对路径:
如:
网络绝对路径的好处,可以指向互联网上的一台电脑的中的文件
相对路径
./当前目录(可以省略)
../上一级目录(可以连着书写../../)
/站点根目录(站点根目录使用的是DocumentRoot配置,指的就是那DocumentRoot所配置的那一串目录)
向下访问:
./文件夹名/文件夹名
向上访问:
../../
相对路径的改变
嵌套引入
A脚本,引入B脚本,B脚本引入C脚本
在进行嵌套引入脚本文件时,会发生相对路径的改变。
示例:
原因:
使用了相对路径./与../
示例:
在使用时:
对于嵌套引入不建议在中间文件中使用./与../,建议使用绝对路径
示例:
数组
数组就是一组数据的集合,就是用于存储多个具有一定关系的多个变量。
对应现实中的具有行列结构的数据。
数组的定义
方式1:
使用array()数组结构
示例:
方式2:
使用简单语法结构'[]',注意:
此种语法只能在5.4及其以上的版本中使用
示例:
方式3:
动态添加数元素的方式
示例:
数组的访问
在数组中唯一标识元素的是下标(键名),
语法:
$数组名[下标/键名]
示例:
PHP数组的特点
1、php中数组可以直接使用,不需要预先定义。
2、php中数组的长度不需预先定义。
3、php中数组的元素可以是任意数据类型。
4、php中数组的下标可以不连续
PHP中数组的分类
根据数组元素的下标是数值、字符还是数值与字符混合,可以将PHP中的数组分为,索引数组、关联数组、混合数组
索引数组:
数组元素的下标是整数,
关联数组:
数组元素的下标是字符。
关联数组的特点:
每个元素都由两部分组成,键名与键值。
关联数组的创建:
语法:
$数组名=array(键名=>键值,键名=>键值.....);
示例:
数组的遍历
遍历:
就为了某种需求,对数组中所有的元素都进行一次访问。
使用for循环结构,条件是所遍历数组的元素的下标必须是连续的。
示例:
php为我们提供了专用于遍历数组的语法结构:
foreach
语法:
foreach($arras$v1【=>$v2】){
//循环体
}
说明:
foreach是对数组的指针进行操作(读取每一个元素的键名与键值,并赋值给$v1与$v2,之后还要将指针下移)
示例:
foreach原理
代码:
$arr=['0'=>10,'3'=>20,'nine'=>30,'10'=>40];
foreach($arras$v1=>$v2){
echo"键名为:
$v1"."键值为:
$v2".'
';
}
原理:
1、编译源代码,
2、执行
2.1、首先在栈区开辟一个空间存储$arr
2.2、在存储数据时,发现赋值号右边是一个数组,那么就是在堆区开辟个空间用于存储数组的数据
2.3、将数组的内存地址,传递给栈区中的$arr
3、执行foreach
3.1、在栈区开辟两个空间存储$v1与$v2
3.2、读取当前数组指针所指向的元素,将当前元素的键名与键值,赋值给变量$v1与$v2
3.2.1、会在全局区开辟空间用于存储数据0与10
3.3、将数组的指针下移一行
3.4、执行下一次循环,与3.23.2.1相同的操作,当前循环执行结束,将数组指针再下移一行。
3.5再次循环
3.6再次循环,循环结束,指针再下移一行
3.7再次循环时,发现没有数据,那么直接结束循环结构。
图解:
数组相关函数
each()
主要用于每次读取数组当前指针所指向的元素(读取一个元素的)键名与键值,并组织混合数组返回。
将指针下移一行。
示例:
list();
语法:
list(变量列表)=$数组名;
说明:
●list是一种语法结构,不是一个函数
●作用将数组中的元素依次赋值给list后的变量列表中的变量
●list只能获取索引下标的元素
示例:
each与list遍历索引数组
示例:
插入排序算法
原理:
代码:
知识点扩展:
URI(UniformResourceIdentifier统一资源标识)
URL(UniformResourceLocation统一资源定位)
URL:
URL是URI的子集
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 作用 数组