PHP系列(二)PHP函数的声明与应用

(1)函数的定义和应用

function 函数名(参数1,参数2,参数3......)

{

函数体

return 返回值

<?php

table(3,8,"学生成绩表","red","green");

function table($row,$col, $tablename, $bgcolor1,$bgcolor2)

{

echo "<table border=1 width=800>";

echo"<caption><h1>".$tablename."</h1></caption>";

$i=0;

$k=0;

while($i<$row){

if($i%2==0)

$bgc=$bgcolor1;

else

$bgc=$bgcolor2;

echo "<tr bgcolor=‘".$bgc."‘>";

$j=0;

while($j<$col)

{

echo "<td>".$k++."</td>";

$j++;

}

echo "</tr>";

$i++;

}

echo"</table>";

}

table(5,2,"学生信息表","yellow","bule");

table(8,12,"学生表","#f00ff","#ffffaa");

?>

显示出三个表(学生成绩表,学生信息表,学生表)

(2)函数局部变量

函数体结束、变量释放

<?php

function fun1()

{

$a=100;

echo $a;

}

function fun2()

{

$b=200;

echo $b;

}

fun1();

fun2();

?>

显示:

100

200

(3)函数的全局变量

<?php

$a=200;

$b=500;

function fun1()

{

echo $GLOBALS["a"];

}

function fun2()

{

global $b;

echo $b;

}

fun1();

fun2();

?>

显示:

200

500

(4)函数的静态变量

静态变量用在累加

<?php

function test()

{

static $a=0; //静态变量

echo $a."<br>";

$a++;

}

test();

test();

test();

?>

显示:

0

1

2

function_exists();判断函数是否存在

<?php

function test()

{

static $a=0;

$a++;

}

test();

if(function_exists("test1")){

echo"test1 is exists";

}else{

echo"test1 is not exists";

}?>

显示:test1 is exists

函数参数传递

<?php

function fun1($a=1, $b=2, $c=3, $d=4, $e=5)

{

echo $a."<br>";

echo $b."<br>";

echo $c."<br>";

echo $d."<br>";

echo $e."<br>";

}

fun1(a,b,c,d);

?>

显示:a b c d 5

func_get_args(); //获取方法中参数的数组

<?php

function fun($a)

{

$args=func_get_args(); //获取方法中参数的数组

echo count($args);

echo "<br>";

echo $args[4];

}

fun(1,2,3,5,688);

?>

显示为:5  688

(5)变量函数

<?php

function test()

{

echo "#######<br>";

}

$a=test;

$a();

?>//变量函数

显示:#######

(6)递归函数

<?php

function demo($a){

echo "#####".$a."<br>";

if($a>0)

demo(--$a);

}

demo(3);

?>//递归函数

显示为:

#####3

#####2

#####1

#####0

<?php

function demo($a){

if($a > 1){

$r=$a*demo($a-1);

}else {

$r=$a;

}

return $r;

}

echo demo(4);

?>递归调用

4x3x2x1=24

function fun($a){

echo$a."<br>";

if($a>0){

fun($a-1);

}else{

echo"-------<br>";

}

echo$a."<br>";

}

fun(4);

显示:

4
3
2
1
0
-------
0
1
2
3
4

(7)回调函数

函数当作参数传递

function  fnCallBack( $msg1 , $msg2 )

{

echo ‘msg1:‘.$msg1;

echo "<br />\n";

echo ‘msg2:‘.$msg2;

}

$fnName = "fnCallBack";

$params = array( ‘hello‘ , ‘world‘ );

call_user_func_array( $fnName , $params );

显示为:

msg1:hello

msg2:world

$arr = array(1,5,7);

Function mycon($a,$b){

If($a>$b){

Return1;

}elseif($a<$b){

Return -1;

}else{

Return 0;

}

}

Usort($arr,”mycon”);

Print_r($arr);

(8)内部函数

<?php

function demo($php,$java,$oracle){

function php($php){

if($php >=60 && $php<=100){

return "php成绩及格";

}else{

return "php成绩不及格";

function java($java){

if($java >=60 && $java<=100){

return "java成绩及格";

}else{

return "java成绩不及格";

function oracle($oracle){

if($oracle >=60 && $oracle<=100){

return "oracle成绩及格";

}else

{

return "oracle成绩不及格";

echo php($php)."<br>";

echo java($java)."<br>";

echooracle($oracle)."<br>";

$total=$php+$oracle+$java;

$anv=$total/3;

echo "你的总成绩是".$total."<br>";

echo "你的平均成绩是".$anv."<br>";

}

demo(10,80,70);

?>

显示为:

php成绩不及格
java成绩及格
oracle成绩及格
你的总成绩是160
你的平均成绩是53.3333333333

(9)加载自定义函数库

Include() 速度快脚本执行包含时、当处理失败时、会产生一个警告、

Require() 会导致一个致命错误

require()将一个文件在预处理期间被导入、像把该文件粘贴到使用函数的地方

include_once  require_once这二个函数如果被包含了。只会被包含一次、不会重复

(10)匿名函数

<?php
$greet = function($name){
    printf("Hello %s\r\n", $name);
};
$greet(‘World‘);
$greet(‘PHP‘);

(11)php引用参数的函数

只有在内存变量中才有地址、有引用关系的二个变量、一个变、另一个就变、

如果在函数说明中、有&出现、说明这个 参数是一个引用参数、调用时传参数时、就必须传一个变量

 

$b= 20;

functiondemo(&$a){

    $a=100;

}

echo$b."<br>";

demo($b);

echo$b."<br>";

显示为:

20

100

时间: 2024-12-20 12:41:25

PHP系列(二)PHP函数的声明与应用的相关文章

JavaScript 闭包系列二 --- 匿名函数及函数的闭包

一. 匿名函数 1. 函数的定义,可分为三种 1) 函数声明方式 function double(x) {    return 2*x;} 2)Function构造函数,把参数列表和函数体都作为字符串,不方便,不建议使用 var double = new Function('x', 'return 2*x;'); 3)函数表达式方式 var double = function(x) {    return 2*x;} 该形式中,等号右边是一个匿名函数,创建函数完毕后,将该函数赋给了变量doubl

C# 互操作性入门系列(二):使用平台调用调用Win32 函数

好文章搬用工模式启动ing ..... { 文章中已经包含了原文链接 就不再次粘贴了 言明 改文章是一个系列,但只收录了2篇,原因是 够用了 } --------------------------------------------------------------------------------------- C#互操作系列文章: C#互操作性入门系列(一):C#中互操作性介绍 C#互操作性入门系列(二):使用平台调用调用Win32 函数 C#互操作性入门系列(三):平台调用中的数据封

JavaScript进阶系列01,函数的声明,函数参数,函数闭包

本篇主要体验JavaScript函数的声明.函数参数以及函数闭包. □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调用我"); } 通过这种方式声明的函数属于Window对象,可以在任何地方调用,即在doSth方法的之前和之后都可以调用. 可以在doSth方法之前调用: doSth(); function doSth() { alert("可以在任何时候调用我"); } 可以在doSth方法之

Cocos2d-x 系列二之C语言

1.宏定义<1>.常量定义 #define MATH_PI 3.14 void defineH() { // 宏在编译阶段就把宏对应的常量给替换了,所以很快: printf("%f", MATH_PI); } <2>.方法定义 // 定义宏方法,宏方法没有具体的返回类型:当多行的时候,在后面添加一个反斜杠: #define MAX(A,B) {\ A>B?A:B } 调用:MAX(12,30): 2.结构体<1>.结构体定义 struct Pe

php从入门到放弃系列-03.php函数和面向对象

php从入门到放弃系列-03.php函数和面向对象 一.函数 php真正的威力源自它的函数,内置了1000个函数,可以参考PHP 参考手册. 自定义函数: 1 function functionName() 2 { 3 要执行的代码; 4 } 函数命名的准则: 函数的名称应该提示出它的功能 函数名称以字母或下划线开头(不能以数字开头) 二.面向对象 1.类基础语法: 1 <?php 2 class Site { 3 /* 成员变量 */ 4 var $url; 5 var $title; 6 7

代码收藏系列--javascript--日期函数

/** * 将 Date 转化为指定格式的String * 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) 可以用 1-2 个占位符 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) * @param Date date * @param string fmt * @returns string */ function formatDate(date, fmt) { //author: meizz var

highcharts 结合phantomjs纯后台生成图片系列二之php2

上篇文章中介绍了phantomjs的使用场景,方法. 本篇文章详细介绍使用php,highcharts 结合phantomjs纯后台生成图片.包含一步步详细的php代码 一.highcharts 结合phantomjs纯后台生成图片系列的准备: 下载phantomjs解析插件,从highcharts官方下载所需插件. 新建一个工程文件夹phantomjs,所必备的js文件有: highcharts 结合phantomjs纯后台生成图片系列二之php 其中jquery.js为 v1.7.1; hi

Javascript设计模式系列二

创建对象的基本模式,一.门户大开型,二.采用下划线来表示属性和方法的私用性,三.使用闭包来创建私用的成员. 一.门户大开型.只能提供公用成员.所有属性和方法都公开的.可访问的.这些共用属性都要使用this关键字来创建. <script type="text/javascript"> ////定义Dog对象 var Dog = function (name, age) { this.name = name; this.age = age; } Dog.prototype.Sa

原始套接字基础(原始套接字系列二)

在进入Raw Socket多种强大的应用之前,我们先讲解怎样建立一个Raw Socket及怎样用建立的Raw Socket发送和接收IP包. 建立Raw Socket 在Windows平台上,为了使用Raw Socket,需先初始化WINSOCK: // 启动 WinsockWSAData wsaData;if (WSAStartup(MAKEWORD(2, 1), &wsaData) != 0){ cerr << "Failed to find Winsock 2.1 or