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配置文件 启动 ...
随机推荐
- POJ 2109
#include<iostream> #include<stdio.h> #include<math.h> using namespace std; int mai ...
- iScroll.js 用法参考
本文原文链接:http://www.cnblogs.com/duanhuajian/archive/2013/04/08/3008323.html 概要 iScroll 4 这个版本完全重写了iScr ...
- Andoid自动判断输入是电话,网址或者Email的方法----Linkify的应用!
本节要讲的是,当我们在一个EditText输入电话或者网址还是Email的时候,让Android自动判断,当我们输入的是电话,我们点击输入内容将调用打电话程序,当我们输入是网址点击将打开浏览器程序.而 ...
- VS2012简单的使用感受+插件推荐
VS2012简单的使用感受+插件推荐http://www.cnblogs.com/tangge/archive/2013/03/12/2955367.html
- zoj 3529 A Game Between Alice and Bob 博弈论
思路:每个数的SG值就是其质因子个数,在进行nim博弈 代码如下: #include<iostream> #include<cstdio> #include<cmath& ...
- node入门开发遇到的问题
最近在看node入门这本书,https://cnodejs.org/getstart 里面是跟随作者完成一个小的demo,书中不免会有遗漏的,下面是我在实现里面最后一个例子时遇到的问题,希望能够帮助其 ...
- C#程序重启自己
Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location); Application.Exit();
- Android核心分析之十七电话系统之rilD
Android电话系统之-rild Rild是Init进程启动的一个本地服务,这个本地服务并没有使用Binder之类的通讯手段,而是采用了socket通讯这种方式.RIL(Radio Interfac ...
- Ajax实例-购物车
一.概述 1.当添加或删除商品时,购物车会立即更新数据 2.思路: (1)建立商品类Item.java,存有商品属性name,prince,code(商品编码)等 (2)建立商品目录类Catalog. ...
- Centos环境下部署游戏服务器-编译
游戏服务器是在windows环境开发的,相关跨平台的东西在这里不谈了,只谈如何将Visual Studio 工程转换到Linux下编译.这里涉及到的软件分别为:Centos版本为6.4,Visual ...