标签:style http io ar color os 使用 sp for
函数的定义:函数就是一段封装好的代码块,可以随时调用。在PHP中有两种函数:自定义函数与系统函数。
自定义函数语法格式:
function 函数名称([参数1,[参数2]....])
{
函数体(程序内容叙述)
[return 返回值;]
}
注:[]里的东西可有可无
自定义函数的名称:
参数(可以分为形参和实参):
所谓参数就是:用来把数值从函数外部传入函数体中,并用来加以运算处理。
参数之间用“,”隔开,当函数不需要任何数值传入时,可以省略参数。
形参:声明函数时,函数名后面括号内的表达式称为形参。
function table(形参1,形参2){}
实参:被调用函数名后面括号中的表达式称为实参。
table(实参1,实参2);
实参和形参需要按顺序对应传递数据。
function table2($rows,$cols,$color=‘yellow‘)
{
echo ‘<table border="1" bgcolor="‘.$color.‘">‘;
for($i = 0;$i < $rows;$i++){
echo ‘<tr>‘;
for($n = 0;$n <$cols;$n++){
echo ‘<td>‘.($i*$rows+$n).‘</td>‘;
}
echo ‘</tr>‘;
}
}
table2(10,10,‘red‘);
注意:函数参数中,没有默认值的放到前面,有默认值的放在参数列表中的后边。
table2($rows,$cols,$color = ‘yellow‘)
返回值:
当调用函数时需要它返回一些数值,那么就要在函数体中用return语句实现。
格式如下:
return 返回值;//返回值可以是变量也可以是一个表达式
exit(); //无返回值 void
return语句在函数体中使用时,有以下两个作用:
说明:如果函数没有返回值,就只能算是一个执行过程,只依靠函数做一些事情还不够,有时更需要在程序脚本中
使用函数执行后的结果。由于变量的作用域的差异,调用函数的脚本程序不能直接使用函数体里面的信息,但可以通过关键字return向调用者传递数据。
echo与return:
echo直接输出到浏览器,不能再加工,不能赋值给变量
return可以赋值给变量,变量是数据的临时容器(return返回一个值,等待一个变量接收它)
注意: 如果函数有返回值,当函数执行完毕时就会将return后面的值返回到调用函数的位置处,这样就可以把函数名称当作函数返回的值使用。(这时调用函数时对ruturn后面的值是不管用的(retrun的值已经返回到调用函数的位置处,return以前的输出还是可以照样输出),因为她已经变成某个值了无法用funName();输出,需要echo funName()才可以输出。)
<?php
header("content-type:text/html;charset=utf-8");
//在函数的声明之前调用
echo show();
echo ‘<hr>‘;
function show()
{
echo ‘ccc‘;
return ‘aaa‘;
//return所在行之后的代码不会执行
echo 111;
}
//函数的调用,不会将return后面的值返回
show();
echo ‘<hr>‘;
//return返回的值 需要一个变量来接收它
$result = show();
echo $result;
echo ‘<hr>‘;
//也可以直接输出 函数名称
echo show();
echo ‘<hr>‘;
输出结果:
cccaaa
函数的调用:
格式:函数名();
说明:table();
驼峰命名法:
function showInfo()
{
}
function ShowInfo()
{
}
判断函数是否存在: function_exists()
if(function_exists(‘table‘)){
echo ‘table‘;
}else{
echo ‘table函数不存在,请先定义table函数‘;
}
PHP变量的范围:
<?php
$username = ‘shifang‘;
function stu()
{
$name = ‘libai‘;
echo $name;
//无法调用外部的$username,而在函数体内也没有声明$username
10 echo $username;
echo ‘xxxx‘;
}
stu();
//函数体外无法调用函数体内的变量
16.echo $name;
echo $username;
结果:
libai
Notice: Undefined variable: username in D:\xampp\htdocs\89\Exercise\2014-7-28 PHP function\007quanju.php on line 10
xxxx
Notice: Undefined variable: name in D:\xampp\htdocs\89\Exercise\2014-7-28 PHP function\007quanju.php on line 16
shifang
在PHP的页面中声明的变量,叫“全局变量”.
函数内的变量叫“局部变量”.
二者没有半毛钱关系:函数内的变量,外部无法调用,函数外的变量,函数无法调用
(某戏班子到某学校唱戏,两者的花名册都不可相互调用)
静态变量:
<?php
function tongji()
{
static $n = 0;
echo $n;
$n++;
}
tongji();
tongji();
tongji();
echo ‘<hr>‘;
function jishu()
{
$m = 0;
echo $m;
$m++;
}
jishu();
jishu();
jishu();
输出结果:
0123
00000
函数内如何调用函数外的变量?
1、传参
2、引用传参---"&"
下边的两种方法不推荐使用,因为其破坏了函数的封装性
3、声明全局变量 global
function t2()
{
global $a;
echo $a;
}
t2();
4、超级全局变量,在页面的任何部分,包括函数,方法等,都可以直接访问
$GLOBALS
超级全局变量(9个):
<?php
//使用return
function show()
{
$username = ‘dufu‘;
return $username;
}
//输出dufu
echo show();
echo ‘<hr>‘;
$username = ‘xiao‘;
echo $username;
echo ‘<hr>‘;
function getData()
{
return $GLOBALS[‘username‘] = ‘libai‘;
}
//无法输出
getData();
echo ‘<hr>‘;
$result = getData();
echo $result;
echo ‘<hr>‘;
echo getData();
echo ‘<hr>‘;
//超全局变量,不仅可以获取外边的变量,还可以改变变量的值
echo $username;
echo ‘<hr>‘;
输出结果:
dufu
xiao
libai
libai
libai
PHP函数的各种形式(分类):
1、常规参数函数
格式说明:
string example(string name, int age, double height)
所谓的常规参数函数就是实参和形参应该个数相等,类型一致。
<?php
function table2($rows,$cols,$color="yellow")
{
echo ‘<table border="1" bgcolor="‘.$color.‘">‘;
for($i = 0;$i < $rows;$i++){
echo ‘<tr>‘;
for($n = 0;$n <$cols;$n++){
echo ‘<td>‘.($i*$rows+$n).‘</td>‘;
}
echo ‘</tr>‘;
}
}
table2(10,10,‘red‘);
2、伪类型参数函数
主要用于查看手册时,查看各种需要的类型,在实际的代码中很少用到,有这么概念就行,伪类型可以理解为什么类型都可以。
格式说明:
mixed funName(mixed $args) #在参数列表中出现类型使用 mixed 描述的参数
number funName(number $args) #在参数列表中出现类型使用 number 描述的参数
PHP中函数的每个参数,都可以为其传递任意类型的值。
PHP的伪类型,包括mixed(任意类型)、number(int ,float)、callback(函数名)三种。
3、默认参数函数
格式说明:mixed funName(string name[,string value[,int expire]]) #在参数列表中出现使用[ ]描述的参数
<?php
//一个函数:只要有一个参数有默认值,该函数就叫默认参数函数
//默认参数:有默认值的参数放在 参数列表 后面,前面的 形参个数 要求与 传入实参 时的 个数和类型必须一致
function table($rows = 10,$cols = 10,$color = ‘red‘)
{
echo ‘<table border="1" bgcolor="‘.$color.‘">‘;
for($i = 0; $i < $rows; $i++){
echo ‘<tr>‘;
for($n = 0; $n < $cols; $n++){
echo ‘<td>‘.($i*$cols+$n).‘</td>‘;
}
echo ‘</tr>‘;
}
echo ‘</table>‘;
}
table(3,3,‘blue‘);
table();
4、可变长度参数函数
格式说明:
mixed funName(string arg1 [,string...]) #在参数列表中出现使用“...”描述的参数
使用默认参数函数适合实参个数少于形参的情况,而可变长度参数函数则适合实参个数多于形参的情况。
如果希望函数可以接受任意数量的参数,需要在函数中使用PHP系统提供的func_get_args()函数,它将所有传递个脚本函数的参数当作一个数组返回。
获取所有传入的参数:func_get_args();
获取所有传入参数的个数: func_num_args();
单独获取指定的参数: func_get_arg(n);
<?php
//可变长度参数函数:传入的参数个数是不确定的
function show()
{
//获取所有传入的参数,并将其转为一个数组返回
$arr = func_get_args();
//输出的$arr为数组
//获取所有传入参数的个数
echo func_num_args();
//单独获取指定的参数,需要传入参数的顺序号,从0开始
echo func_get_arg(3);
}
show(‘a‘,‘n‘,‘x‘,‘y‘,‘z‘);
function getInfo(){
$num = func_num_args();
for($i = 0;$i < $num;$i++){
echo func_get_arg($i).‘<br>‘;
}
}
getInfo(‘姓名:小二‘,‘年龄:18‘,‘aihao:nvkeguan‘,‘teshuaihao:hejiu‘);
输出结果:
5
Array ( [0] => a [1] => n [2] => x [3] => y [4] => z )
y
姓名:小二
年龄:18
aihao:nvkeguan
teshuaihao:hejiu
5、引用参数函数
格式说明:void funName(array &arg) #在参数列表中出现使用 & 描述的函数
<?php
$arr = array(98,66,1,23,12,5);
echo ‘<pre>‘;
print_r($arr);
function show(&$crr){
for($i = 0;$i <4; $i++){
($crr[$i] += 5).‘<br>‘;
}
}
//$crr = &$arr;$arr是数组所以无法输出数组?
show($arr);
echo ‘<pre>‘;
print_r($arr);
echo ‘<hr>‘;
echo ‘<pre>‘;
sort($arr);
print_r($arr);
输出结果:
Array
(
[0] => 98
[1] => 66
[2] => 1
[3] => 23
[4] => 12
[5] => 5
)
Array
(
[0] => 103
[1] => 71
[2] => 6
[3] => 28
[4] => 12
[5] => 5
)
Array
(
[0] => 5
[1] => 6
[2] => 12
[3] => 28
[4] => 71
[5] => 103
)
<?php
$var=100;
function testi($arg)
{
//局部变量无法使用全局变量,报错
echo $var;
echo ‘<br>‘;
//传参$var=100
echo $arg;
echo ‘<br>‘;
//改变局部变量的值,输出200
$arg=200;
echo $arg;
}
testi($var);
//改变局部变量的值,不会影响全局变量
echo $var;
echo ‘<hr>‘;
function test(&$arg)
{
//局部变量无法使用全局变量,报错
echo $var;
echo ‘<br>‘;
//传参
echo $arg;
echo ‘<br>‘;
//改变局部变量的值,输出200
$arg=200;
echo $arg;
}
test($var);
//改变局部变量,全局变量的值也被改变200
echo $var;
输出结果:Notice: Undefined variable: var in D:\xampp\htdocs\89\HomeWork\moxie\yinyon.php on line 7
100
200100
Notice: Undefined variable: var in D:\xampp\htdocs\89\HomeWork\moxie\yinyon.php on line 28
100
200200
6、回调参数函数
格式说明:
mixed funName( callback arg ) #在参数列表中使用伪类型 callback 描述
所谓回调函数,就是指调用函数时并不是传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中。
函数参数中,有一个参数值是另一个函数的函数名,那么这个函数就是回调函数
如果在函数的格式说明中,出现“callback”类型的参数,该函数就是回调函数。
callback也属于PHP中伪类型的一种,说明函数的参数需要接受另一个函数作为实参。
使用回调函数的目的是可以将一段自己定义的功能传到函数内部使用。
<?php
function fun($msg1,$msg2){
echo ‘$msg1=‘.$msg1.‘<br>‘;
echo ‘$msg12=‘.$msg2;
}
call_user_func_array(‘fun‘,array(‘lamp‘,‘兄弟连‘));
结果:$msg1=lamp
$msg12=兄弟连
<?php
echo ‘<pre>‘;
$arr = [199,1,24,789,213,123];
usort($arr,‘myfun‘);
function myfun($x,$y){
return $y-$x;
}
print_r($arr);
结果:
Array
(
[0] => 789
[1] => 213
[2] => 199
[3] => 123
[4] => 24
[5] => 1
)
<?php
$bianliang = ‘myfun‘;
function myfun()
{
echo ‘this is a function‘;
}
// myfun();
//$bianliang();
//自定义的回调函数
function show($func){
//myfun();
$func();
}
show(‘myfun‘);
结果:this is a function
7、递归函数
递归函数即自调用函数。
<?php$n = 10;
function jianfa($x){
//执行递减
$x--;
//输出传入的参数值
echo $x;
//如果$a大于零就继续调用函数本身
if($x > 0){
jianfa($x);
}else{
//如果不大于0就输出字符串
echo ‘<=====>‘;
}
//输出$a的值
echo $x;
}
jianfa($n);
结果:
9876543210<=======>0123456789
8、匿名函数
1、它没有函数名
2,可以赋值给一个变量 $bianliang = function(参数)use(变量){//函数体};
3,所有回调函数中,回调参数位置都可以用匿名函数替代。
4,可以使用use直接调用外部的变量($arr),如果引用外部变量(&$arr),在内部可以更改外部的变量值
<?php
//1,第一种用法:将匿名函数数赋值给一个变量,调用的时候 $变量名(参数..);
$show = function($a){
echo ‘代码的处理‘;
echo $a;
};
$n = 15;
$show($n);
<?php
$color = ‘red‘;
$table = function($rows,$cols)use(&$color){
$color = ‘green‘;
echo ‘<table border="1" bgcolor="‘.$color.‘">‘;
for($i = 0;$i < $rows;$i++){
echo ‘<tr>‘;
for($n = 0;$n < $cols;$n++){
echo ‘<td>‘.($i*$cols+$n).‘</td>‘;
}
echo ‘</tr>‘;
}
echo ‘</table>‘;
};
$table(10,10);
echo $color;
结果:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
green&符,将内部的变量值把外部的变量改变
使用自定义函数库:
include();
require();
include(); require(); 语句是语言结构,不是真正的函数
<?php
//包含文件到当前的位置。而 include 只产生警告(E_WARNING),脚本会继续运行。
include ‘04table.php‘;
//包含文件到当前的位置。require 在出错时产生 E_COMPILE_ERROR 级别的错误。
require(‘04table.php‘);
echo table(5,5);
inculde_once();
require_once();
标签:style http io ar color os 使用 sp for
原文地址:http://www.cnblogs.com/lxw89/p/bb1e4a0a9e34c21fb5d42a3009c86939.html