PHP基础(第五话)

函数预加载

PHP执行流程

语法分析-->语法分析-->编译--->加载编译的代码-->执行

代码在编译的过程中,函数就已经被加载进内存中了。

 

与函数有关魔术常量

__FUNCTION__ 获取当前函数名称

 

包含文件

在网站中有相同的banner,版权等等页面,我们可以将相同的页面做成包含文件,在展示的页面中包含即可。

包含文件相当于将文件的内容复制到页面中,如果包含文件有页面结构,(html),包含后,页面中就不止一个页面结构了,这与W3C定义的规范不符合。

语法:

include():可以包含多次

require():可以包含多次

include_once():只能包含一次

require_once():只能包含一次

包含文件中如果是html页面,在包含文件中有html代码,包含文件中的PHP代码是可以被解析的。

require 和include的区别:

相同点:可以包含多次

不同点:

include遇到错误继续执行

require遇到错误停止执行:

require_once or include_once()  只包含一次

项目中一般选择require(include),require_once()在包含之前需要先判断一下此文件是否被包含,如果没有则包含,否则不包含,在效率上显然没有require高。

包含文件相当于拷贝文件的代码复制到主文件中,魔术常量除外,魔术常量取得是魔术常量所在的文件的信息。

路径

../  上一级目录

./  当前目录

在html页面中 /表示根目录

./目录/文件 和 目录/文件的区别

这两种写法效果基本上是一致的,不带./的路劲受到include_path配置的影响

不带点的写法,默认在当前文件下找如果找不到就会去配置文件中 c:\php\includes目录下找,而带点的写法只会在当前目录下去找,找不到就直接抛错。

也可以set_include_path()来设置包含文件所在的目录

设置include_path

1.将项目中经常使用的文件放在一个统一的目录下,然后通过include_path指向此文件夹,就不用写很长的地址字符串。

2.将安全性高的文件放到站点外,通过include_path指向此目录。比如连接数据库。

 

终止脚本执行

exit 和die() :这两者一样,一般情况下exit就直接终止了,die(str)在终止前还能在输出最后一条语句。


终止所有的执行。
return :终止当前页面的执行

return作用

1.终止函数的执行

2.从函数中返回值

3.终止当前脚本的执行

4.用来做配置文件

 

延迟脚本执行

语法:sleep(秒)

<?php
	sleep(3);//延迟3秒
	echo '无痕';
?>

 

foreach数组指针

1.指针其实也是一个变量,用来保存某个元素的地址。指针可以移动。

2.默认情况下,打开一个数组,指针会指向数组的第一个元素

foreach(数组 as 键=>值){
    //循环体
}

执行流程

foreach是循环,也适用于continue和break;

 

foreache值变量传址

键变量不支持传地址。

默认传值

传址:

foreach循环遍历的时候,遍历的是数组的拷贝。

 

数组指针的操作

key():从关联数组中取得键名,没有取到返回NULL

current():返回数组中的当前单元

next():将数组中的内部指针向前移动一位

prev():将数组的内部指针倒回一位

reset():将数组的内部指针指向第一个单元

end():将数组的内部指针指向最后一位

 

数组从后往前输出

 

each()

返回数组中当前的键和值,并且将数组指针向前移动一步,如果内部指针穿越了数组的末尾,返回false,

键值对被返回了四个单元,其中包含索引数组和关联数组,下标是key和0的是键,下标是1和value的是值。

each=key()+current + next();

如果第二次遍历,需要通过reset()复位指针

 

list()

将索引数组中的值赋给一些变量

注意:只能是索引数组,不能是关联数组

<?php
	$books = array(
		'西游记','水浒传','红楼梦','西厢记'
	);
	list($book1,$book2) = $books;
	echo $book1,'<br>',$book2;  //西游记、水浒传
?>

 

数组在复制指针的时候指针的处理:

结论:在数组复制的时候,不管指针合法还是不合法,都是一起复制的。低版本的PHP语法中如果不合法,指针会被重新初始化,新数组指针会被初始化。新数组就是先使用的数组。

 

cow(写时复制)

cow就是copy on write ,在值传递的情况下,数据在赋值时候,内部存在一个优化,叫写时复制

在值传递的赋值时,真实的数据空间不是立即复制的,而是其中一个变量执行写操作的时候才会重新分配内存空间

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值