当前位置: 首页 > news >正文

有什么好的互联网平台做网站/网站域名备案查询

有什么好的互联网平台做网站,网站域名备案查询,备案网站地址,wordpress添加分类#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>> 目录1.前言2.自定义函数2.1执行原理2.2函数名称要求2.3函数要求2.4函数返回值2.5判断重名方法3.局部变量,全局变量和超全局变量3.1局部变量3.1.1动态变量3.…

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>> hot3.png

  • 目录
  • 1.前言
  • 2.自定义函数
  • 2.1执行原理
  • 2.2函数名称要求
  • 2.3函数要求
  • 2.4函数返回值
  • 2.5判断重名方法
  • 3.局部变量,全局变量和超全局变量
  • 3.1局部变量
  • 3.1.1动态变量
  • 3.1.2静态变量
  • 3.2全局变量
  • 3.3超全局变量 $GLOBALS
  • 4.PHP传值和传引用的区别
  • 4.1传值
  • 4.2传引用
  • 5.特殊形式函数剖析
  • 5.1可变函数
  • 5.2回调函数
  • 5.2.1自定义回调函数
  • 5.2.2系统提供回调函数
  • 5.2.3调用回调函数
  • 5.3匿名函数
  • 5.4 递归函数
  • 6.函数实战
  • 6.1封装截取文件扩展名
  • 6.2封装获得日期时间星期形式函数
  • 7.总结

1.前言

函数就是用来完成某些功能的代码段,PHP函数又分为系统函数和自定义函数,其中系统函数指的是字符串、数字、数组、日期时间等已封装好的函数;而自定义函数则是按照具体需求封装的函数。

2.自定义函数

原则上一个函数只完成一个功能

2.1执行原理

函数不调用不执行,当封装完函数之后将其载入到内存中,当调用函数的时候,找到对应的函数,执行函数体,当碰到return语句或者执行到函数的末尾,再控制权交到调用的函数的位置上,接着程序继续向下执行。

2.2函数名称要求

不能包含特殊字符,必须以下划线或者字母开头,跟上数字字母下划线;遵循驼峰命名法或者下划线,最好以动词开始,含义明确,不区分大小写,但是尽量遵循大小写调用,比如:getExt(),uploadFile(),但注意不支持重名,重名会报致命错误。

2.3函数要求

可以有参数,也可以没有参数;可以有返回值,也可以没有。

2.4函数返回值

  • 函数只有0个或一个返回值,如果要返回多个值,可以通过返回数组或者对象实现
  • 函数遇到return就立即结束
  • 函数的返回值可以是任意类型
  • 函数默认返回NULL

2.5判断重名方法

那么怎么判断函数名称是否重名?这里有个函数function_exists();

//检查函数名称是否存在重复
//function_exsits($funcName)://存在则返回true,否则返回false

注意:下面该函数,函数内包含函数,如果要调用test6(),必须先调用一次test5()

function test5(){function test6(){echo "123";}
}
test5();
test6();

3.局部变量,全局变量和超全局变量

3.1局部变量

函数体内声明的变量为局部变量,局部变量分为动态变量和静态变量

3.1.1动态变量

什么是动态变量?函数执行完毕就立即释放的,比如下面这个函数,输出:1111

//局部变量——动态变量
function test4(){$i =1;echo $i,'<br/>';++$i;
}
test4();
test4();
test4();
test4();

3.1.2静态变量

什么是静态变量?通过static关键字声明的变量为静态变量,当第一次调用函数时候相当于初始化静态变量,当函数执行完毕之后静态变量没有释放而是保存到静态内存中,当再次调用函数的时候首先从静态内存中取出变量值接着执行,比如下面这个函数,输出:1234

//局部变量——静态变量
function test4(){static $i =1;echo $i,'<br/>';++$i;
}
test4();
test4();
test4();
test4();

3.2全局变量

函数体外声明的变量或者在函数体内通过global关键字声明的变量为全局变量,全局变量在函数内函数外都能够使用,比如下面的函数,先输出12,再输出35

//全局变量
$i = 1;
$j = 2;
function test6()
{var_dump($i, $j);
}function test7()
{global $i, $j;var_dump($i, $j);$i = 3;$j = 5;
}
test7();
test6();

注意:

在函数中修改全局变量函数内外都会发生变化。

在创建全局变量时候不能同时赋值,比如global $i=1;这是错误的写法。

3.3超全局变量 $GLOBALS

<?php
function test()
{$foo = "local variable";echo '$foo in global scope:' . $GLOBALS["foo"] . "n";echo '$foo in current scope:' . $foo . "n";
}
$foo = "Example content";
test();

输出的是:

$foo in global scope: Example content
$foo in current scope: local variable

4.PHP传值和传引用的区别

4.1传值

默认情况下,函数参数通过值传递,即便在函数内部改变参数的值也不会改变函数外的值,它们的内存空间是独立的。

4.2传引用

通过在参数前添加&符号,代表引用传递参数,在函数内部对其所做操作影响其本身

注意:引用参数只能传递变量给函数,不能传递非变量,如下图所示

function test1(&$j){$j+=20;var_dump($j);
}
$m=5;
test1($m);
var_dump($m);
echo '<hr/>';
test1(3);//报错,只有变量被引用才能传递,3是一个值

up-2887c2a397ab7cb9a7cc0f491d36f5f9ac6.png

5.特殊形式函数剖析

特殊函数又分为可变函数,递归函数,匿名函数,回调函数和可变参数形式的函数,下面我们一一来看看这些特殊函数的使用情况。

5.1可变函数

如果将”函数名称”赋予字符串类型变量,在使用该变量带有小括号,那么就会解析成为函数

header('content-type:text/html;charset=utf-8');
//可变变量
$funcName = 'md5';
echo $funcName('fangzhijie');
echo '<br/>';
echo md5('fangzhijie');

这里有个方法,可以得到所以已经定义的函数,方便我们查看

//get_defined_functions()得到所有已定义的函数,返回数组,包含系统函数和用户自定义函数
print_r(get_defined_functions());

5.2回调函数

回调函数就是调用函数的时候将另一个函数名称当作参数传递进去,并且在函数体重进行调用

5.2.1自定义回调函数

<?php
header('content-type:text/html;charset=utf-8');
//自定义回调函数
function study(){echo "this is a return function....";
}function doWhat($funcName){echo '调用回调函数:';$funcName();
}
doWhat('study');

5.2.2系统提供回调函数

array_map($callback,$arr1):将回调函数作用到给定数组的单元上,返回一个数组,包含$arr1所有单元经过callback作用之后的单元。

//系统提供回调函数
$array = [1,2,3,4,5];
function test1($var){return $var*2;
}
$res = array_map('test1',$array);
print_r($array);
echo '<br/>';
print_r($res);

up-e571973941641e03bf5b10fc49fc1ab9981.png

array_walk($arr1,$callback):使用用户自定义函数对数组中的每个元素做回调处理。

//系统提供回调函数array_walk($arr1,$callback)
$array = [1,2,3,4,5,6,7,8];
function test2($var){return $var*3;
}
var_dump(array_walk($array,'test2'));

array_filter():用回调函数过滤数组中的单元

//系统提供回调函数array_filter($arr1,$callback)
$array = [1,2,3,4,5,6,7,8];
function odd($var){if($var%2==1){return $var;}
}
$res = array_filter($array,'odd');
var_dump($res);

up-388ab2a0ed00125783dd7641fc30f96f990.png

5.2.3调用回调函数

可以通过call_user_func()和call_user_func_array()可变函数的形式在函数体中进行调用

call_user_func($callback,$dataString):把第一个参数作为回调函数调用

function study($username){echo $username.'is studying...<br/>';
}
function play($username){echo $username.'is playing...<br/>';
}
call_user_func('study','queen');

up-c8640d2558d9a27ae8765b3893b6bb6e617.png

注意使用系统函数也行,比如md5

echo call_user_func('md5','fangzhijie');
call_user_func_array($callback,$dataArray):把第一个参数作为回调函数调用
//call_user_func_array($callback,$dataArray):把第一个参数作为回调函数调用
function add($x,$y){return $x+$y;
}
echo call_user_func('add',1,3);
echo '<hr/>';
echo call_user_func_array('add',array(2,3));

5.3匿名函数

匿名函数也叫闭包函数,允许临时创建一个没有指定名称的函数,常用来做回调函数参数的值,当然,也可以作为变量的值来使用。

<?php
header('content-type:text/html;charset=utf-8');
//匿名函数形式
$func = function(){return 'this is a test';
};
echo $func();
//通过create_function()
$func =create_function('','echo "this is a test2~"');
echo '<hr/>';
$array = [1,2,3,4,5];
$res = array_map(function($var){return $var*2;},$array);
print_r($res);
echo '<hr/>';
call_user_func(function($username){echo "hello ,{$username}";},'fangzhijie');

5.4 递归函数

如果函数A需要调用函数B,而函数B和函数A的代码实现一样,那么就需要封装为递归函数,通俗来讲,就是自己调用自己的函数,通过特定条件结束执行。

比如:

PHP实现目录遍历,目录复制,删除非空目录操作,无极限分类,递归函数除了在函数体内调用自己的函数名,还可以使用__FUNCTION__从而调用自己

注意事项:

对于多处使用的自定义函数,使用包含函数文件方式可以避免多处写相同的函数,因此在这里讲一下require()/require_once()/include()/include_once()的区别

  • 通过require()/require_once()包含文件不存在的时候,会产生一个致命错误和一个警告,程序终止执行
  • 通过include()/include_once()包含文件不存在的时候,会产生两个警告,程序继续执行

6.函数实战

6.1封装截取文件扩展名

/*** 截取文件扩展名* @param string $filename* @return string*/
function getExt($filename){return strtolower(pathinfo($filename,PATHINFO_EXTENSION));
}

注意:

pathinfo() 函数以数组的形式返回文件路径的信息。

语法:pathinfo(path,options)

其中path表示要检查的文件路径,options可选,表示要返回的数组元素,默认all

options可能的值:

  • PATHINFO_DIRNAME - 只返回 dirname,目录
  • PATHINFO_BASENAME - 只返回 basename,文件名
  • PATHINFO_EXTENSION - 只返回 extension,文件名后缀

6.2封装获得日期时间星期形式函数

/*** @param string $del1 分隔符,默认年* @param string $del2 分隔符,默认月* @param string $del3 分隔符,默认日* @return bool|string*/
function getDateStr($del1='年',$del2='月',$del3='日'){$dayArr=array('日','一','二','三','四','五','六','日');$day=date('w');//一周内第几天0~6return date("y{$del1}m{$del2}d{$del3} 星期".$dayArr[$day]);
}
echo getDateStr();
echo getDateStr('/','/',null);

7.总结

通过本次学习,让我们对函数的一些概念有了更加深刻的认识,让我懂得了函数的一些要求(名称,变量,返回值等),以及变量的类型(局部变量(动态和静态),全局变量和超全局变量),又了解了传值和传引用的区别,以及函数的类型(可变函数,回调函数,匿名函数,递归函数),总的来说,本次可以算是一次较深的知识回顾,希望自己再接再厉~

http://www.lbrq.cn/news/1429597.html

相关文章:

  • 旅游公司网站难做吗/免费的网站软件
  • 怎么在后台设置网站的关键词/广州网站关键词推广
  • 安徽省建设厅证书查询官方网站/网络营销个人总结
  • 沈阳网站制作的公司/seo培训价格
  • 请seo的人帮做网站排名/浙江seo外包费用
  • 挂机宝如何做网站/长春网站优化
  • 湖南长沙岳麓区疫情最新消息/广州专门做seo的公司
  • 湖南省住房城乡建设网站/网页推广链接怎么做
  • 网站rp原型图怎么做/品牌网
  • 沈阳企业定制网站建设/精准的搜索引擎优化
  • 什么网站做护工/ciliba最佳磁力搜索引擎
  • 淘宝网站建设维护会计科目/成年学校培训班
  • 网站顶端flash/教育培训网页设计
  • 上海百度做网站/网站自然排名工具
  • 网站制作加谷歌推广/网站排名推广推荐
  • 开发商城网站建设/友情链接源码
  • 保定专门做网站的公司/网推是什么
  • 菏泽网站建设哪好/百度推广网址
  • dj网站建设/长沙seo网络公司
  • 网站域名是不是网址/seo教学视频教程
  • 日本做爰动漫网站/武汉竞价托管公司
  • 烟台广告公司南网站建设评价/seo优化咨询
  • 网络营销课程教案/宜昌网站seo收费
  • 传媒网站给行业做宣传/晚上免费b站软件
  • 网站做js跳转/深圳百度seo怎么做
  • 免费做产品宣传的网站/网络营销环境
  • 学校做网站的软件/上海优化公司
  • 和网站开发公司如何签合同/企业宣传
  • 建设工程人力资源网查询平台/青岛seo关键字排名
  • 深圳网站建设ejaket/站长全网指数查询
  • AAAI爆款:目标检测新范式,模块化设计封神之作
  • spring中异步任务注解@Async和@scheduled的使用
  • 智能家居【home assistant】(二)-集成xiaomi_home
  • 【学习笔记】NTP服务客户端配置
  • 使用EvalScope对GPT-OSS-20B进行推理性能压测实战
  • 搭建局域网yum源仓库全流程