• 首页
  • 前端
    • 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 语法(四)二分法、 传参、 全局变量、 函数、 匿名函数、 变量作用域、 变量生命周期、 终止脚本、 递归、 静态变量

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

PHP语法(四)

包含文件

  1. include和require:包含多次
  2. include_once和require_once:包含一次
  3. 包含文件就相当于将包含文件中的代码拷贝粘贴到PHP页面中(魔术常量除外,魔术常量显示所在文件的文件信息),所以后缀是.html的包含文件中的PHP代码被文件包含后也是会执行的。

路径

路径分为绝对路径和相对路径

绝对路径:从盘符开始 c:\aa\bb.txt

相对路径:从当前文件所在的目录开始 aa\bb.txt ../aa.txt

../表示上一级目录 ./当前目录

区别:

./就表示在当前目录下找

不带./受include_path配置的影响

作用:将项目中的包含文件统一放置到指定目录内,然后利用include_path指向这个目录。可以提高安全性,也可以不用写很长的地址字符串。

include_path的值可以写多个路径,从前往后找文件。

set_include_path(“F:\www1;d:\www2;c:\”);

获取虚拟目录地址

文件包含

路径中“/”和“\”的区别

/:斜杠,用于web路径 http://www.php.com/aa/bb/index.html

\:反斜杠 用于文件物理地址路径 C:\aa\bb\index.html

在windows中可以相互混淆,但是在Linux中不可以,Linux中严格区分。

函数

函数是一个固定的代码块,也称为子程序,一个函数可以被多次调用,函数可以很好的实现计算机的模块化编程。

定义语法

function 函数名(参数1,参数2,…){

//函数体

}

函数的命名规则:

  1. 以字母、下划线开头,后面跟的是字母、数字、下划线
  2. 函数名不区分大小写(JS是区分大小写的)

调用函数

通过函数名来调研函数。

例题:打印斐波那契数列

参数的概念

函数括号里面的数称为参数

参数分为形式参数和实际参数

形式参数没有具体的值,只起一个形式的作用,用来告诉调用者需要传递几个参数给函数。函数定义时候的参数是形式参数

实际参数:函数调用的时候传递给函数的参数。

可变函数

将函数名保持在变量中。

<?php

function fun1() {

echo ‘处理一年级的事情<br>’;

}

function fun2() {

echo ‘处理二年级的事情<br>’;

}

function fun3() {

echo ‘处理三年级的事情<br>’;

}

function fun($grade) {

$f=’fun’.$grade; //可变函数

$f();

}

fun(1);

fun(2);

fun(3);

匿名函数

没有名字的函数,PHP5.3以后才支持的。

函数的传值与传址

默认情况下,函数参数传递是值传递,在定义函数的时候参数前面加上“&”表示地址传递。

脚下留心:如果函数的参数是引用传递,调用函数的时候不能直接写值,只能写变量,因为地址总是保存在变量中。

参数的默认值

如果参数有默认值的情况下,传递了参数就使用传递的值,没有传递参数就使用默认值。

注意事项

  1. 默认值必须在一个存在的值,不能用变量来代替

  1. 常量可以做默认值

  1. 在定义函数的时候,没有默认值的参数写前面,有默认值的参数写后面。
  2. 形参合实参不匹配

    1. 实际参数少于形式参数,报错,没有对应值的参数为null
    2. 实际参数少于形式参数,只取前面对应的值。

传递不确定参数

在js中通过arguments关键字来获取传递的参数。

判断函数是否存在

return

作用1:在函数中使用

  1. 终止函数的执行
  2. 从函数内部将数据返回出来

作用2:在页面中使用

第一步:创建9-config.php

<?php

return array(

‘host’=>’lolcalhost’,

‘username’=>’root’,

‘pwd’=>’root’

);

第二步:在9-demo.php页面中包含9-config.php

<?php

$config=require ‘./9-config.php’;

var_dump($config);

作用:用来做框架的配置文件。

作用3:终止脚本的执行

终止脚本的执行的方法

  1. return
  2. exit——等同于die
  3. die

区别:

  1. return只能终止当前脚本,如果包含文件中含有return,只能终止包含文件。
  2. exit和die用来终止所有脚本执行
  3. exit和die后面都能跟参数(程序中有一个潜规则,没有参数用exit,有参数用die)。

测试

  1. 写一个包含文件

echo ‘包含文件开始<br>’;

return;

echo ‘包含文件结束<br>’;

  1. 写一个测试文件

  1. 将return换成exit或die,运行结果


变量的作用域

  1. 全局变量:作用范围在函数的外部
  2. 局部变量:作用范围在函数内部
  3. 超全局变量:在整个页面访问(函数内,函数外都能访问)



在函数内部使用全局变量

方法一:使用$GLOBALS

例题:

例题一:

例题二:

方法二:使用global关键字

注意:只有变量有作用域的概念,常量没有作用域的概念


方法三:匿名函数use()

use()将匿名函数外部的变量引入到匿名函数的内部。

练习

变量的生命周期

全局变量声明的时候产生,页面执行完毕后销毁

局部变量调用函数的时候产生,函数执行完毕销毁。

静态变量程序加载的时候产生,只被初始化一次,页面执行完毕销毁

静态变量(static)

静态变量一般指的是局部静态变量,PHP中没有全局的静态变量,因为全局的静态变量就是全局变量。

注意:静态变量是有作用域的

递归

在函数的内部自己调用自己。

递归的要素

  1. 递归点:函数内部调用自己的地方
  2. 递归出口:递归结束

例题:用递归实现从1加到任意一个数

例题:打印前十个斐波那契数列

第n个斐波那契数等于第n-1和n-2的和

<?php

/**

*$n是第n个斐波那契数

*/

function fun($n) {

if($n==1 || $n==2) {

return 1;

}

return fun($n-1)+fun($n-2);

}

//打印前10个斐波那契数列

for($i=1;$i<=10;$i++)

echo fun($i),’&nbsp;’;

/**

*分析第四个斐波那契数

fun(4) =fun(3)+fun(2)

=fun(2)+fun(1)+1

=1+1+1

=3

*/

?>

算法:二分法查找

  1. 前提:一个有序的数组
  2. 功能:在有序的数组中查找是否存在某个数

在1,5,9,12,56,78,102数组中查找102

第一步:找出数组中间的数12,12<102,在12右边查找

第二步:剩下的数据有56,78,102,找中间的数是78,78<102,在78的右边找

第三步:剩下的数据有102,找到了。

实现代码

<?php

/**

*@param $array array 查找的数组

*@param $min int 最小下标

*@param $max int 最大下标

*@param $search number 查询的数字

*/

function binary($array,$min,$max,$search) {

while($min<=$max){

$mid=floor(($min+$max)/2); //计算中间元素的下表

if($array[$mid]==$search) //找到查找的元素

{

return $mid; //返回下标

}

elseif($array[$mid]<$search) { //查找的元素比中间值大

$min=$mid+1; //更改最小下标值

}

else {

$max=$mid-1; //更改最大下标值

}

}

return -1; //没有找到

}

$num=array(1,5,9,12,56,78,102);

echo binary($num,0,count($num)-1,8),'<br>’;

作业:

  1. 猴子吃桃子,第一天吃了一半又多吃一个,第二天一样,到第十天就剩下一个桃子,请问原来有几个桃子?
  2. 用递归实在二分法
标签: 二分法传参全局变量函数匿名函数变量作用域变量生命周期终止脚本递归静态变量
上一篇文章

PHP 语法(五)http 错误编号、 冒泡排序、 多字节处理、 快速排序、 数组指针、 算法、 选择排序、 错误处理

下一篇文章

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

下一篇文章
PHP 核心编程(一)文件上传、 表单传值、 验证文件类型

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