PHP学习笔记03——函数
<!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——函数的更多相关文章
- OpenCV 学习笔记03 findContours函数
opencv-python 4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...
- OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓
本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...
- C++ GUI Qt4学习笔记03
C++ GUI Qt4学习笔记03 qtc++spreadsheet文档工具resources 本章介绍创建Spreadsheet应用程序的主窗口 1.子类化QMainWindow 通过子类化QM ...
- SaToken学习笔记-03
SaToken学习笔记-03 如果排版有问题,请点击:传送门 核心思想 所谓权限验证,验证的核心就是一个账号是否拥有一个权限码 有,就让你通过.没有?那么禁止访问! 再往底了说,就是每个账号都会拥有一 ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- matlab学习笔记 bsxfun函数
matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...
- 机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理、源码解析及测试
机器学习实战(Machine Learning in Action)学习笔记————03.决策树原理.源码解析及测试 关键字:决策树.python.源码解析.测试作者:米仓山下时间:2018-10-2 ...
- matlab学习笔记13_1 函数返回值
一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://blog.csdn.net/qq_36556 ...
- Redis:学习笔记-03
Redis:学习笔记-03 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 7. Redis配置文件 启动 ...
随机推荐
- HDU 2672 god is a girl (字符串处理,找规律,简单)
题目 //1,1,2,3,5,8,13,21,34,55…… //斐波纳契数列 #include<math.h> #include<stdio.h> #include<s ...
- POJ 1961 2406 (KMP,最小循环节,循环周期)
关于KMP的最短循环节.循环周期,请戳: http://www.cnblogs.com/chenxiwenruo/p/3546457.html (KMP模板,最小循环节) POJ 2406 Powe ...
- 《Thinking in C++》学习笔记(一)【第二章】
第二章 对象的创建与使用 2.1语言的翻译过程 翻译器分为两类:解释器(interpreter)和编译器(compiler). 2.1.1解释器 解释器将源代码转化成一些动作(它可由许多机器指令组成) ...
- Java IO(二)
字节流 字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream B ...
- Jmeter之Bean shell使用(二)
上一篇Jmeter之Bean shell使用(一)简单介绍了下Jmeter中的Bean shell,本文是对上文的一个补充,主要总结下常用的几种场景和方法,相信这些基本可以涵盖大部分的需求.本节内容如 ...
- 浅谈Asp.net的sessionState
见:http://my.oschina.net/kavensu/blog/330436
- Android Non-UI to UI Thread Communications(Part 3 of 5)
Original:http://www.intertech.com/Blog/android-non-ui-to-ui-thread-communications-part-3-of-5/ Conti ...
- angularJS seed 安装
安装nodejs 安装python 配置python 环境 安装git 配置git 环境 clone angularJS seed 代码. 环境变量如下: C:\Program Files\nodej ...
- C# Socket 入门3 UPD(转)
今天来写一个UPD 1.服务端: using System; using System.Collections.Generic; using System.Text; using System.Net ...
- IE9 JSON未定义
原文:http://social.msdn.microsoft.com/Forums/ie/en-US/fc41127c-0243-4d2e-8e7c-2b311f12e390/ie9-json-no ...