<!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<?php
//1. 简单函数示例,创建一个n*m的table
/* PHP中的函数格式,其中可以没有返回值
* function(参数1,参数2...) {
* 函数体
* return 返回值;
* }
* 在函数定义之前和之后都可以调用函数
*/
create_table("3*4的表格", 3, 4); function create_table($tablename, $rows, $cols) {
echo "<table align='center' border='1' width='".($cols*100)."'/>";
echo "<caption><h1>{$tablename}</h1></caption>";
for ($i = 1; $i <= $rows; $i++) {
echo "<tr>";
for ($j = 1; $j <= $cols; $j++) {
echo "<td width='100'>".($i*$cols-$cols+$j)."</td>";
}
echo "</tr>";
} echo "</table>";
} create_table("5*6的表格", 5, 6); // 2. 局部变量、全局变量与静态变量
/* 局部变量:函数内部声明,作用域仅限于函数内部
* 全局变量:在函数中使用要用global加载全局变量,或者使用$GLOBALS数组
* 静态变量:在局部变量前加static使改变量为所有对该函数的调用间共享
* */
$a = 3;
$b = 4;
globalvar();
globalvar();
function globalvar(){
static $c = 0; //静态局部变量
$c++;
global $a; //不加这一句直接输出$a会报错
echo $a;
echo $GLOBALS['b']; //使用全局数组访问$b
echo $c; //分别打印1,2
echo "<br/>";
} // 3. 按引用传值,在变量前加上&符将按引用传值,这种情况下只能传变量而不能传一个值
$a = 20;
yinyong($a);
function yinyong(&$a){
$a = 30;
}
echo $a."<br/>"; // 4. 默认参数,和C++一样
function outme($name, $age="20"){
echo $name.",".$age."<br/>";
}
outme("张三"); // 5. 可变个数参数,用func_get_argc()来得到参数列表
function more_argc(){
$args = func_get_args();
for ($i = 0; $i < count($args); $i++)
echo "参数".($i+1).":".$args[$i]."<br/>";
}
more_argc("11","22","33"); // 6.回调函数,使用函数作为参数
/* 两种方法可以使用回调函数
* 1.使用变量函数名
* 2.使用call_user_func_array()来调用
* 类静态函数和对象的方法回调有不同的地方,在下面实例说明
*/
//下面使用字符串来调用函数,但这种方法不直观,并不常用
function varfunc($func) {
echo $func("varfunc_outstring");
}
function outstring($str) {
echo $str."<br/>";
}
varfunc("outstring");
//下面使用call_user_func_array()来回调
call_user_func_array("outstring", array("varfunc_outstring"));
//下面分别调用类静态函数和成员函数
class Class_varfunc {
static function fun1($str){
echo $str."<br/>";
}
function fun2($str){
echo $str."<br/>";
}
}
//调用类静态函数,直接用类名加方法名即可
call_user_func_array(array("Class_varfunc", "fun1"), array("varfunc_outstring"));
//调用类非静态函数,要用对象的引用
call_user_func_array(array(new Class_varfunc(), "fun2"), array("varfunc_outstring"));
?> </html>

执行结果

PHP学习笔记03——函数的更多相关文章

  1. OpenCV 学习笔记03 findContours函数

    opencv-python   4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...

  2. OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓

    本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...

  3. C++ GUI Qt4学习笔记03

    C++ GUI Qt4学习笔记03   qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...

  4. SaToken学习笔记-03

    SaToken学习笔记-03 如果排版有问题,请点击:传送门 核心思想 所谓权限验证,验证的核心就是一个账号是否拥有一个权限码 有,就让你通过.没有?那么禁止访问! 再往底了说,就是每个账号都会拥有一 ...

  5. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  6. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  7. 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试

    机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...

  8. matlab学习笔记13_1 函数返回值

    一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://blog.csdn.net/qq_36556 ...

  9. Redis:学习笔记-03

    Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...

随机推荐

  1. Delphi中有序型

    有序类型包括:.integer(整型).character(字符型).boolean(布尔型).enumerated(枚举型).subrange(子界型)有序类型定义了一组被排序的值.每个相异值都有唯 ...

  2. myeclipse 10的破解以及运行run.bat错误或者双击立即消失的问题

    安装包下载: ed2k://|file|[myeclipse.10.0.更新发布].myeclipse-10.0-offline-installer-windows.exe|947752488|73b ...

  3. ResourceBundle使用

    一.认识国际化资源文件   这个类提供软件国际化的捷径.通过此类,可以使您所编写的程序可以:          轻松地本地化或翻译成不同的语言          一次处理多个语言环境          ...

  4. Codeforces Round #337 (Div. 2) B. Vika and Squares 水题

    B. Vika and Squares   Vika has n jars with paints of distinct colors. All the jars are numbered from ...

  5. ubuntu挂载磁盘

    1.首先查磁盘UUID:sudo blkid 2.打开挂载文件:sudo /etc/fstab 3.写挂载文件: UUID=000860AE000FDD66 /mnt/disk1            ...

  6. el中保留字empty与null的区别

    先看例子: <%@page pageEncoding="utf-8" %><BR>name:${param.name }<br /> empty ...

  7. TCP与UDP的不同接包处理方式

    TCP与UDP的不同接包处理方式 1.UDP发包的问题问:udp 发送两次数据,第一次 100字节 ,第二次200字节, 接包方一次recvfrom( 1000 ), 收到是 100,还是200,还是 ...

  8. VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)

    VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html   上一讲中讲了VS20 ...

  9. EXT实现表格斑马线

    Ext.grid.GridPanel 单双行颜色样式(斑马线)2014-04-03 11:25 1078人阅读 评论(0) 收藏 举报分类:ExtJs(36)Ext.grid.GridPanel st ...

  10. UML系列03之UML时序图

    时序图介绍 时序图(Sequence Diagram),亦称为序列图或循序图,是一种UML行为图.时序图是用来描述系统内部是如何交互运作的,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协 ...