//第一部分 函数的定义和声明
* 函数的定义:
* 1.
函数是一个被命名的
* 2.独立的代码段
* 3.它执行特定任务
* 4.并可以给调用它的程序返回一个值
*
* 函数的优点:
* 1. 提高程序的重用性
* 2. 提高程序的可维护性
* 3.可以提高软件的开发效率
* 4.提高软年的可靠性
* 5.控制程序的复杂性
*
* 函数的声明
*
* function
函数名(){
* 函数体
* }
*
* function
函数名(参数1, 参数2, 参数.... ) //参数列表,如果有多个就作用,分开
* {
* 函数体
* }
*
* function
函数名(){
* 函数体
* 返回值;
* }
* function
函数体(参数列表){
* 函数体
* 返回值
* }
* 一、函数必须调用才能执行,可以在声明之前调用,也可以在函数声明之后调用
* 二、函数名命名和变量一样, aaa bbb ccc aaaBbbCcc,
函数名称一定要有意义
* 三、函数在声明时不能重名
* * 四、可以通过向函数传递参数,改变函数的行为
* 形参:就在声明函数时,声明的参数,参数就是变量,多个参数用,分开
* 实参: 调用 函数时传给形参数值(数据,也可以变量)
* 五、如果没有返回值则称为过程
* 六、通过使用return 语句返回数据
* 七、函数执行到return语句就结束,所以不要在这个语句后写代码,也可以使用return结束函数的执行
* *
* function 出差(谁, 目的地, 联系人,交通){
* * '''''''
*
* return
出差的结果
* * }
* 领导2=出差(张三,上海, 王五, 飞机);
* 领导4=出差(李四, 大连, 赵六, 火车);
*
* 函数名的作用:
* * 1. 调用函数,开始执行函数
* 2. 可以向函数中传递 数据
* 3. 函数名就是返回的值
*
echo
"**************************************************************";
echo "一,无参数函数调用";
table1(); //调用函数table();
table1(); //调用函数table();
table1(); //调用函数table();
function table1(){
echo '
border=1 width="800" align="center">';
echo
'
表名
';for($i=0;
$i<10; $i++){
if($i%2==0)
$bg="#ffffff";
else
$bg="#cccccc";
echo
'
';for($j=0; $j<10;$j++ ){
echo
'
'.($i*10+$j).''; }echo '
';}
echo
'
';}
echo
"**************************************************************";
echo "二,带参数函数调用"
echo table(10, 10, 800, "aaaa", "red");
echo table(5, 5, 500, "bbbb", "green");
echo table(2, 2, 200, "cccc", "blue");
function table($row, $col, $width, $tableName, $color)
{
$str='
border=1 width="'.$width.'" align="center">';
$str.='
'.$tableName.'
';for($i=0;
$i
if($i%2==0)
$bg="#ffffff";
else
$bg=$color;
$str.='
bgColor="'.$bg.'">';
for($j=0; $j
$str.='
'.($i*$row+$j).''; }$str.='
';}
$str.='
';return $str;
}
echo
"**************************************************************";
echo "三,返回值函数"
echo sum(10, 5);
echo '
';
echo sum(10,5)+100;
echo '
';
$sum=sum(3, 4);
echo $sum;
function sum($x, $y)
{
$sum=0;
$sum=$x*$x+$y+$y;
return $sum;
}
//第二部分 函数的定义和声明
* 一,PHP的变量的范围
* 局部变量:
在函数中声明的变量就是局部变量,只能在自己的函数内部使用。
* 全局变量:
在函数外声明,在变量声明以后的,直到整个脚本结束前都可以使用,包括在函数中和{}中都可使用
* * PHP的变量分不出 是声明还是使用,
* 在PHP中使用全局变量
要通过global关键字将这个全局变量包括到函数中才能使用到,在global声明之后才是使用全局的变量
*
* 参数就是局部变量,这个局部变量可以调用 时去赋值。
*
//
************************************************函数局部变量
function
demo1()
{
$a=100; //函数局部变量
}
demo1();
//
*************************************************全局变量
$a=10;
function
demo2()
{
global
$a; //声明全局变量
$a+=10;
echo
$a." demo
";
}
function
test(){
global
$a; //声明全局变量
$a+=5;
echo
$a." test
";
}
echo
$a."----
";
demo2();
echo
$a."!!!!
";
demo2();
echo
$a."@@@@@
";
test();
echo
$a."#######
";
* 二,PHP的静态变量
*
* 静态变量只能声明在函数中(类中),不能在全局声明
* 使用static在变量前;
*
* 作用:一个变量可以在同一个函数在多次调用中同用。
* 1. 静态变量在静态代码段中保存
* 2. 一个函数多次调用之间共用,但只在第一次调用 函数时声明到内存,以后再调用用,就不再声明,而直接使用
*
function
test2()
{
static
$a=0;
$a++;
echo
$a."
";
}
test2();
test2();
test2();
test2();
test2();
*
* 三,变量函数:如果一个变量后面有括号
$var(), 就将寻找与变量值$var=hello 同名的函数 hello();
*
function
one($a, $b){
return
$a+$b;
}
function
two($a, $b){
return
$a*$a+$b*$b;
}
function
three($a, $b){
return
$a*$a*$a+$b*$b*$b;
}
$var=one;
echo
"结果:".$var(3, 4)."
";
//调用函数one($a, $b);
$var="two";
echo
"结果:".$var(3, 4)."
";
//调用函数two($a, $b);
$var=three;
echo
"结果:".$var(3, 4)."
";
//调用函数three($a, $b);
* 四,PHP六种函数参数 * a.
函数的功能------------决定是否使用这个函数
* b. 函数的参数------------决定函数怎么调用
---有几个参,传什么类型的值,。。。。
* c.
函数的返回值----------调用后怎么处理这个函数
* * PHP给2000多个函数。。。
都属于系统涵数,都可以通过名称直接使用。
*
* 一定要先使用系统函数,如果系统函数没有你想要的功能,再去自己定义函数
*
* 1.
常规函数
bool copy (
string source, string dest )
2. 带有mixed , mixed表示可以传任何类型的数据
bool chown (
string filename, mixed user )
3. 带有&参数的函数, 表示引用赋值,
这个参数不能传值,只能传一个变量,
然后函数将变量的值改变,我们在使用这个变量时,值也是变化的
bool arsort (
array &array [, int sort_flags] )
*
$arr=array(1, 9, 5, 8, 3, 4);
sort($arr); //排序 .引用赋值 调用
print_r($arr);
*
4.默认函数 带有[]的函数, 表示这个参数是可选的,
如果你传值了就使用你传的值,如果没有传值则使用默认值
直接在声明函数时,就为参数给初值。
可选值和必须值, 必须从后向前设置
bool arsort ( array
&array [, int sort_flags] )
*
//demo3($a,[],[]) //第一个参数必须给出,后两个参数可选
function
demo3($a, $b=20, $c=30){ //自定义可选参数函数
echo
"### $a ### $b ##### $c
########
";
} demo3(8,9); //调用
demo3(4);
demo3(9,9,9);
*
5. 带有...的参数函数,
...表示可以传任意多个参数 int array_unshift ( array &array,
mixed var [, mixed ...] )
*
function demo5() //可以有多个参数
{
$args=func_get_args(); //获取函数参数
$sum=0;
for($i=0; $i
$sum+=$args[$i];
return
$sum;
}
echo demo5(1, 2, 3, 4, 5, 6, 7,8,9,10);
*
6. 回调函数 带有callback, 就是调用这个函数时需要我们传一个函数进来(函数名,函数名字串)
array array_filter ( array input [, callback
callback] )
*
*
function demo6($x, $y)
{
return
$x*$y;
}
function test8($x, $y)
{
return
$x*$x + $y*$y;
}
function sum($a, $b, $fun) //定义回调函数
{
return
$a+$b+$fun($a,$b);
}
echo sum(2, 3, demo6); //调用函数sum
echo "
";
echo sum(2, 4, "test8");
// **************************************************
$a=array(1, 2, -3,4,-5,6,-7,8,9);
print_r(array_filter($a, demo11)); //使用系统函数array_filter
function demo11($n) //自定义过滤函数。过滤掉非偶数
{
if($n%2==
0)
return
true;
else
return
false;
}
//第三部分 函数的定义和声明
*
* 1.
内部函数:
PHP可以在函数内部再声明函数
* 目的就是在函数的内部调用
*
就是用来帮助外部函数完成一些子功能的。
*
function
score($php, $java,$dotnet)
{
function
php($php){
if($php>60)
return
"及格";
else
return
"不极格";
}
function
java($java){
if($java>60)
return
"及格";
else
return
"不及格";
}
function
dotnet($dotnet){
if($dotnet
> 60)
return
"及格";
else
return
"不及格";
}
$total=$php+$java+$dotnet;
$agv=$total/3;
echo
"你的php成绩是 {$php} 分,
".php($php)."
";
echo
"你的java成绩是 {$java} 分,
".java($java)."
";
echo
"你的dotnet成绩是 {$dotnet} 分,
".dotnet($dotnet)."
";
echo
"你的总分是: {$total}
";
echo
"你的平均分是:{$agv}
";
}
score(100,
90, 70);
*
* 2.
递归函数: 就是在自己内部调用自己的函数名
*
function demo($num)
{
echo
$num."
";
if($num>0)
demo($num-1);
//递归调用
else
echo
"--------------------
";
echo
$num."
";
}
demo(10);
*
* 3.
外部函数(使用自己定义的函数库) * * require: 用于静态包含
* include: 用于动态包含
* require_once :可防止重复包含
* include_once :可防止重复包含
* 外部文件后缀可为:
* .txt .html .php
*
*
* include(文件名);
* include "文件名";
* * echo "@@@@@@@@@@@2";
* echo("@@@@@@@@@@@@@");
* break
* exit;
*
require "test.inc.html";
//包含文件test.inc.html
require_once
"test.inc.html"; //可判断是否已包含头文件test.inc.html
/
include "test.inc.php";
include_once
"test.inc.php";
/
****************************************** /
require
"header.inc.php"; //静态包含
if($className=="Action"){
include
"action/".$className.".php"; //动态包含
}elseif($className=="Model"){
include
"model/".$className.".php";
}else{
include
"public/".$className.".php";
}
require
"footer.inc.php";
*
* 4. 一些系统函数的使用 *