1、函数声明
<?php /** * function 函数名(參数1, 參数2.... ){ * 函数体; * 返回值; * } */ $sum = sum(3, 4); echo $sum; function sum($x, $y){ $sum = 0; $sum = $x * $x + $y + $y; return $sum; } ?>
2、变量的范围
局部变量: 在函数中声明的变量就是局部变量, 仅仅能在自己的函数内部使用。
全局变量: 在函数外声明的变量就是全局变量, 在变量声明以后直到整个脚本结束前都能够使用, 包含在函数中和 { } 中都可使用。
2.1 知识点: 我们无法分辨出PHP的变量是声明还是使用
<?php $a = 10; function demo($a){ $a += 10; echo $a . '<br>'; } demo($a); echo $a; // 结果: 20, 10 // PHP的变量分不出 $a 是声明还是使用 ? >
2.2 知识点: 函数中使用全局变量必须使用globalkeyword, 在声明global之后的变量才是全局的变量
<?php $a = 10; function demo() { global $a; $a += 10; echo $a . " demo <br>"; } function test() { global $a; $a += 5; echo $a . "test <br>"; } echo $a . " ----<br>"; // 10 ---- demo(); // 20 demo echo $a . " !!!!<br>"; // 20 !!!! demo(); // 30 demo echo $a . " @@@@<br>"; // 30 @@@@ test(); // 35 test echo $a . " ####<br>"; // 35 #### ? >
静态变量: 仅仅能声明在函数中(类中), 不能在全局声明, 变量前使用statickeyword修饰。
2.3 知识点: 静态变量在静态代码块中存储, 它的值能够一个函数多次调用之间共享, 但仅仅在第一次调用函数时声明到内存
以后再调用时就不再声明而直接使用(和Java类似)。
<?php function test(){ static $a = 0; $a++; echo $a."<br>"; } test(); // 1 test(); // 2 test(); // 3 ?>
3、变量函数
事实上这个和JS又非常类似, 比如: 定义$var = hello, 下次使用$var()时就将寻找与变量值同名的函数hello()
<? php 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; //$var = "two"; $var = three; echo "结果:".$var(3, 4)."<br>"; // 91 ?>
4、系统函数
4.1 常规函数
bool copy (string source, string dest)
4.2 带有mixed, mixed表示能够传不论什么类型的数据
bool chown (string filename, mixed user)
4.3 带有&參数的函数, 表示引用赋值, 这个參数不能传值, 仅仅能传一个变量。然后函数将变量的值改变。
我们在使用这个变量时,值也是变化的(和Java中传引用又是一样的)
bool arsort (array &array [, int sort_flags])
<?php $arr=array(1, 9, 5, 8, 3, 4); sort($arr); print_r($arr); ?>
4.4 默认函数, 带有[]的函数, 表示这个參数是可选的,假设你传值了就使用你传的值,假设没有传值则使用默认值
bool arsort (array &array [, int sort_flags])
<?php function demo($a=1, $b=20, $c){ echo "### $a ### $b ### $c ###<br>"; } demo(8,9); ?>
4.5 带有...的參数函数。 ...表示能够传随意多个參数
int array_unshift (array &array, mixed var [, mixed ...])
<?php function demo(){ $sum = 0; for($i = 0; $i < func_num_args(); $i++){ $sum += func_get_arg($i); } return $sum; } echo demo(1, 2, 3, 4, 5, 6, 7, 8, 9); ?>
4.6 回调函数 带有callback, 就是调用这个函数时须要我们传一个函数进来(函数名,函数名字串)
array array_filter (array input [, callback callback])
<?php function demo($n){ if($n % 2== 0){ return true; }else{ return false; } } $a = array(1, 2, -3, 4, -5, 6, -7, 8, 9); print_r(array_filter($a, demo)); // Array ( [1] => 2 [3] => 4 [5] => 6 [7] => 8 ) ? >
5、内部函数
php能够在函数内部再声明函数, 目的就是在函数的内部调用以帮助外部函数完毕一些子功能.
<?php function score($php, $java) { function php($php) { if ($php > 60) return "及格"; else return "不及格"; } function java($java) { if ($java > 60) return "及格"; else return "不及格"; } $total = $php + $java . "分"; $agv = $total / 2 . "分"; echo "你的php成绩是 {$php} 分, " . php($php) . "<br>"; // 调用内部函数 php() echo "你的java成绩是 {$java} 分, " . java($java) . "<br>"; // 调用内部函数 java() echo "你的总分是: {$total} <br>"; echo "你的平均分是:{$agv} <br>"; } score(50, 90); ? >
6、递归函数
所谓的递归函数就是在自己的内部调用自己的函数
<?php function demo($num){ echo $num."<br>"; if($num > 0){ demo($num - 1); // 自己调用自己 }else{ echo "--------------------<br>"; } echo $num."<br>"; } demo(3); /* 3 2 1 0 -------------------- 0 1 2 3 */ ?>
7、重用函数
所谓的重用函数事实上就是把php, html, txt等文件或者其它文件include进来
require: 用于静态包括(如文件头, 文件尾等固定的东西)
include: 用于动态包括(不确定的文件名称)
require_once: (仅仅包括一次, 不存在函数名冲突问题, 但性能没require高)
include_once: (同上)
用法: include "config.inc.php"; include("config.inc.php")
<?php include_once "test.inc.php"; echo $a."<br>"; test(); /* 10 ############## */ ?>
test.inc.php
<?php $a=10; function test(){ echo "##############<br>"; } ?>
版权声明:本文博主原创文章。博客,未经同意不得转载。
阐述php(五岁以下儿童)
注意事项和使用功能