速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
作者:webabcd
介绍
速战速决 之 PHP
- 函数基础
- 函数参数
- 函数返回值
- 可变函数
- 匿名函数
- 闭包函数
- 回调函数
示例
1、函数的相关知识点 1(基础)
function/function1.php
<?php
/**
* 函数的相关知识点 1(基础)
*/ // 可以在相关的 function 声明语句之前调用该函数
f1();
function f1()
{
echo "f1";
echo "<br />";
} // 这里调用 f2() 就错误了
// f2();
$b = true;
if ($b)
{
function f2() // 条件成立才会声明此函数
{
echo "f2";
echo "<br />";
}
}
f2(); // 这里调用 f4() 就错误了(因为 f4 的声明是在 f3 的内部,所以要先调用 f3 才能再调用 f4)
// f4();
f3();
f4();
function f3()
{
echo "f3";
echo "<br />"; function f4()
{
echo "f4";
echo "<br />";
}
}
2、函数的相关知识点 2(函数参数)
function/function2.php
<?php
/**
* 函数的相关知识点 2(函数参数)
*/ // 带参数的函数
f1("webabcd");
function f1($name)
{
echo "hello " . $name; // output: hello webabcd
echo "<br />";
} // 带参数的函数(参数是引用类型)
$name = "webabcd";
f2($name);
function f2(&$n) // 参数是引用类型
{
echo "hello " . $n; // output: hello webabcd
echo "<br />"; $n = "wanglei"; // $n 是引用类型,其与全局变量 $name 指向的内容是一样的
}
echo "hello " . $name; // output: hello wanglei
echo "<br />"; // 带参数的函数(参数可以指定默认值)
f3("hello "); // output: hello webabcd
f3("hello ", "wanglei"); // output: hello wanglei
function f3($p1, $p2 = "webabcd") // 参数的默认值只能是常量,不能是表达式
{
echo $p1 . $p2;
echo "<br />";
}
3、函数的相关知识点 3(函数返回值)
function/function3.php
<?php
/**
* 函数的相关知识点 3(函数返回值)
*/ // 带返回值的函数
$result1 = f1("webabcd");
echo $result1;
echo "<br />";
function f1($name)
{
return "hello " . $name; // output: hello webabcd
} // 从函数返回以一个引用(函数的声明和调用都要加 &)
$result2 = &f2();
echo $result2; // output: 1
echo "<br />";
$result2 = 100; // $result2 是个引用,指向 $i 所指向的内容,所以此句之后 $i 的值为 100
$result3 = &f2();
echo $result3; // output: 101
echo "<br />";
function &f2() // 此函数会返回一个引用(函数的声明和调用都要加 &)
{
static $i = 0;
$i ++; return $i;
}
4、函数的相关知识点 4(可变函数,匿名函数,闭包函数)
function/function4.php
<?php
/**
* 函数的相关知识点 4(可变函数,匿名函数,闭包函数)
*/ // variable function(可变函数),将变量的值作为函数名
function f1()
{
echo "f1"; // output: f1
echo "<br />";
}
function f2()
{
echo "f2"; // output: f2
echo "<br />";
}
$func = 'f1';
$func();
$func = 'f2';
$func(); // 匿名函数
echo preg_replace_callback // output: userName
(
'~-([a-z])~',
function ($match) // 匿名函数
{
return strtoupper($match[1]);
},
'user-name'
); // 闭包函数
// $f3("webabcd"); // 这是错误的,对于闭包函数来说,调用时要在声明语句的后面
$f3 = function($name)
{
echo "hello " . $name; // output: hello webabcd
echo "<br />";
}; // 别忘了闭包函数的“;”
$f3("webabcd");
5、函数的相关知识点 5(回调函数)
function/function5.php
<?php
/**
* 函数的相关知识点 5(回调函数)
*/ // 用于演示如何回调(callback)函数
function myCallbackFunction()
{
return 'myCallbackFunction';
} class MyClass1
{
// 用于演示如何回调(callback)实例方法
public function myMethod1()
{
echo 'MyClass1 myMethod1';
echo '<br />';
} // 用于演示如何回调(callback)类方法
public static function myMethod2()
{
echo 'MyClass1 myMethod2';
echo '<br />';
}
} // 通过 call_user_func 调用指定的函数
echo call_user_func('myCallbackFunction');
echo '<br />'; $obj1 = new MyClass1();
// 通过 call_user_func 调用指定对象的指定方法
call_user_func(array($obj1, 'myMethod1')); // 通过 call_user_func 调用指类的类方法
call_user_func(array('MyClass1', 'myMethod2')); // 通过 call_user_func 调用指类的类方法(PHP 5.2.3 或以上)
call_user_func('MyClass1::myMethod2');
OK
[源码下载]
速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数的更多相关文章
- C#多线程函数如何传参数和返回值
详见网站:http://WWW.MOVIH.COM就是一个多线程爬虫系统. C#多线程函数如何传参数和返回值 提起多线程,不得不提起 委托(delegates)这个概念. 我理解的委托 ...
- Python基础学习----参数和返回值
# 函数的参数和返回值 # 4种组合方式 # 1.无参无返 # def methodone(): # 2.无参有返 def methodtwo(): a=10 return a # 3.有参无返 # ...
- STL算法设计理念 - 函数对象和函数对象当参数和返回值
函数对象: 重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象.一个类对象,表现出一个函数的特征,就是通过"对象名+(参数列表)&qu ...
- 第4天:function对象(案例:获取当前日期属于当年第几天、arguments对象、函数类型、参数、返回值、自身调用)
获取当前日期输入当年第几天 //输入,年月日,获取这个日期是这一年的第几天 //年-月--日:20171月31日 function getDay(year,month,day){ //定义变量存储对应 ...
- 【python】-- 函数非固定参数,返回值(return)
函数非固定参数 1.默认参数: 代码如下: def information_register(name,age,country,sex): print("----注册信息------&quo ...
- python笔记六(函数的参数、返回值)
一 调用函数 在写函数之前,我们先尝试调用现有的函数 >>> abs(-9) 9 除此之外,还有我们之前使用的len()等.可以用于数据类型转换的 int() float() str ...
- C#秘密武器之多线程——参数与返回值
线程函数要么没有参数,要么只能有一个object参数,而且均没有返回值,这样就大大降低了程序的灵活性,其实我们想要的是能像普通方法一样正常使用参数和返回值!能不能实现这个需求呢?下面就介绍两种方法 一 ...
- JS基础研语法---函数基础总结---定义、作用、参数、返回值、arguments伪数组、作用域、预解析
函数: 把一些重复的代码封装在一个地方,在需要的时候直接调用这个地方的代码就可以了 函数作用: 代码重用 函数的参数: 形参:函数定义的时候,函数名字后面的小括号里的变量 实参:函数调用的时候,函数名 ...
- JS基础语法---函数---介绍、定义、函数参数、返回值
函数: 把一坨重复的代码封装,在需要的时候直接调用即可 函数的作用: 代码的重用 函数需要先定义,然后才能使用 函数名字:要遵循驼峰命名法 函数一旦重名,后面的会把前面的函数覆盖 Ctrl +鼠标左键 ...
随机推荐
- 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——理论篇
工作两年多了,我会经常尝试给公司小伙伴儿们解决一些问题,几个月下来我发现初入公司的小朋友最爱问的问题就三个 1. 我想前台调用后台的XXX方法怎么弄啊? 2. 我想后台调用前台的XXX JavaScr ...
- win7-VS2010-IIS网站的发布问题
前提:IIS配置已经完成 问题描述:我们在机房实验里,大家的都可以访问同学A发布的IIS网站,但是,A却不能访问我们每个人的网站,而我们也不能互相访问(除了A). 问题解决:忙乎了半天,原来A同学的防 ...
- Redmined的历史记录显示 "Updated by {{author}} {{age}} ago"
最近Redmine出了点问题,简单查了一下,是ruby的本地冲突包i18n导致的, 先到redmine中跑命令: gem list --local, 查出本地ruby安装的所有的包 这里可以看到i1 ...
- 利用定时器实时显示<input type="range"/>的值
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java-集合练习题1
第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ...
- 将不确定变为确定~DateTime.MinValue和MaxValue引发的异常
回到目录 问题描述: SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间 概念相关 .Net中的DateTime结 ...
- [SpringMVC]SpringMVC学习笔记一: springmvc原理及实例解析.
前言:今天来回顾下SpringMVC的开发原理, 使用图文并茂的方式 来解析其中的内幕, 我相信懂了其中的运行机制后, 对于面试中SpringMVC大家都可以说so easy了. 一, 图示法 第二张 ...
- [开发工具]Java开发常用的在线工具
注明: 本文转自http://www.hollischuang.com/archives/1459.作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工 ...
- VS报错:_CRT_SECURE_NO_WARNINGS
常见报错:warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead ...
- IOS MBProgressHUD的使用
一,简介 苹果的应用程序一般都会用一种优雅的,半透明的进度显示效果,不过这个API是不公开的,因此你要是用了,很可能被清除出AppStore.而 MBProgressHUD提供了一个替 ...