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配置文件 启动 ...
随机推荐
- NodeJS模块、包、NPM
1.NodeJS模块 每一个Nodejs都是一个NodeJS模块,包括JS文件,JSON文本文件,二进制模块文件. a.模块的应用 新建一个文件mytest. ...
- mysql 事务提交过程
打开binlog选项后,执行事务提交命令时,就会进入两阶段提交模式.两阶段提交分为prepare阶段和commit两个阶段.流程如下 :这里面涉及到两个重要的参数:innodb_flush_log_ ...
- (转)Maximum subarray problem--Kadane’s Algorithm
转自:http://kartikkukreja.wordpress.com/2013/06/17/kadanes-algorithm/ 本来打算自己写的,后来看到上述链接的博客已经说得很清楚了,就不重 ...
- java基础知识回顾之javaIO类---BufferedInputStream和BufferedOutputStream
MP3的复制过程: package com.lp.ecjtu; import java.io.BufferedInputStream; import java.io.BufferedOutputStr ...
- sql server 函数
1.Fun_Split 分割字符串,形成返回表 CREATE FUNCTION [dbo].[Fun_Split] ( @Items VARCHAR(MAX), @SplitStr VARCHAR(M ...
- 优化DB2缓冲页的大小
零部件日结无法进行下去,建议配置C:\Program Files\SQLLIB目录下的db2cli.ini文件,加入此节:[DMSCNDB]CLIPkg=5 并重启DB2试试 另外,可以在命令行处理器 ...
- (11)nehe教程5---3D空间
3D空间: 我们使用多边形和四边形创建3D物体,在这一课里,我们把三角形变为立体的金子塔形状,把四边形变为立方体. 在上节课的内容上作些扩展,我们现在开始生成真正的3D对象,而不是象前两节课中那样3D ...
- pycharm控制台中文乱码问题
pycharm控制台中文乱码问题一般是因为之前有配置保存到了文件里, C盘下.pycharm文件夹下有配置文件,删除文件后重装pycharm,配置会重置 不过最后解决问题的做法是删除配置文件后,重新装 ...
- 546B. Soldier and Badges
题目链接 题意: n个数,要保证这n个数完全不相同,求需要把原来的数增加多少,求这个值得最小值 Java 程序 import java.io.PrintStream; import java.ut ...
- hdu 3590 PP and QQ
知识储备: Anti-SG 游戏和 SJ 定理 [定义](anti-nim 游戏) 桌子上有 N 堆石子,游戏者轮流取石子. 每次只能从一堆中取出任意数目的石子,但不能不取. 取走最后一 ...