流程控制
对Php程序执行的过程进行控制
顺序执行
由上而下运行
<?php
echo "执行<br>";
echo "执行<br>";
echo "执行<br>";
echo "执行<br>";
?>
分支语句
if else
$a = 25;
if(a>25) {echo ">25";}
else if(a<25){echo "<25";}
else {echo "=25";};
一个连续的if语句,其判断范围是整个实数集合,
第一个if a>25,其对应else的范围为 a<=25 ,
此时第二个if else的范围a<=25,因为其继承上一个else的范围, if a<25 其对应else的范围为 a=25
if和else配对使用,单独使用else会出错,但if不会
if else也可以嵌套使用
else与其上方最接近的if匹配
$i = 5;
if($i == 5){
echo $i;
}
if($i<5&&$i>5){
echo 666;
}
else{
echo $i;
}
//很明显会输出 5 5
if($number == 100)
{
echo "满分";
}
else if($number>=80&&$number<100)
{
echo "优秀";
}
elseif($number>=60&&$number<80)
{
echo "及格";
}
elseif($number<60&$number>=0){
echo "不及格";
}
else{
echo"分数错误";
}
switch 语句:
switch(($number-$number%10)/10)
{
case 条件值 : 执行内容 ; break;
default: break;
//break用于跳出查找
}
<?php
switch(($number-$number%10)/10)
{
case 6:
case 7:
echo "及格";
break;
case 8:
case 9:
echo "优秀";
break;
case 10:
echo "满分";
break;
default:
echo "不及格";
break;
}
?>
循环语句
while 语句
while(条件){
//要循环的内容
}
例如:输出1~10的数字
<?php
$i = 1;
while($i <=10)
{
echo $i;
$i++;
}
?>
for 语句
for($i=0;$i<n;$i++)
{
//要循环的内容
}
例如:输出1~10的数字
<?php
for( $i = 1 ; $i <= 10 ; $i++)
{
echo $i;
}
?>
do while 语句
//先执行一次内容,再判断条件
do
{
//要循环的内容
}while();
例如:输出1~10的数字
<?php
$i = 0;
do
{
$i++;
echo $i;
}while($i<10);
?>
特殊语句
break 语句
可以在后面接上数字,表示跳出几层循环,默认不加就是跳出当前循环
<?php
for( $i = 0 ; $i < 5 ; $i++)
{
echo "one<br>";
for( $j = 0 ; $j < 5 ; $j++)
{
echo "----second<br>";
for ( $k = 0 ; $k < 5; $k++) {
echo "--------third<br>";
if( $k == 2)
{
break(3);//测试位置
}
}
}
}
?>
结果:
one
----second
--------third
--------third
--------third
continue 语句 —— 跳出本次循环
exit()
die()与exit() 一样
作用:使用之后,结束整个PHP文件的运行
<?php
echo "执行<br>";
echo "执行<br>";
die("遇到错误,无法执行<br>");
echo "执行<br>";
echo "执行<br>";
?>
<?php
echo "执行<br>";
echo "执行<br>";
echo "执行<br>";
exit("遇到错误,无法执行<br>");
echo "执行<br>";
?>
函数
- 提高程序的重用性
- 提高软件的可维护性
- 提高软件的开发效率
自定义函数
函数调用可以在声明函数之前
同一个php文件,不同<?php?>函数是通用的,即可以在任意一个<?php?>中调用其他<?php?>声明的自调用函数
function 函数名(若干参数)
{
函数体
return 表达式;
}
声明格式问题:
<?php
good();
function good () {
echo "This is Function!";
}
good();
?>
不能使用JS函数自调用格式:(function(){})()
传参问题:
<?php
function funs ($a = 0,$b = 2) {
//可以给参数赋值,当函数没有传参数不会出现问题
return $a+$b;
};
echo funs(5);
?>
<?php
function funs2 ($a ,$b) {
return $a+$b;
};
echo funs2(5);//传递参数个数缺失,函数就无法运行会报错
?>
可变函数
利用字符串调用函数:
<?php
function good () {
echo "This is Function!";
};
$a = "good";
$a();
$b = "echo";
$b("6666");//报错
?>
可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。
变量范围
局部变量
在函数内部声明,作用域仅限于函数内部,离开函数后使用,是非法的
全局变量
在函数外部声明,作用域是从变量定义处开始到本程序结尾
<?php
$val = 58;
function funx(){
global $val;
echo $val;
}
funx();
?>
使用global在函数内部引用全局变量
静态变量
函数内部定义变量使用static关键字来定义,函数执行完毕之后不会消失,再次调用函数时,静态变量保存的值依然存在,仅在第一次执行函数的时候初始化
function funs3 () {
static $c = 1 ;
$c++;
echo($c);
};
funs3();//2
funs3();//3
funs3();//4
funs3();//5
?>
参数传递
按值传递
默认行为,不会影响变量的值
<?php
function funs4 ($a) {
echo(++$a);
};
$a = 5;
funs4($a);//6
echo $a;//5
?>
引用传值
前加上&符号
<?php
function funs5 (&$a) {
echo(++$a);
};
$a = 5;
funs5($a);//6
echo $a;//6
?>
可变长度参数列表
使用如下函数,能返回一些关于参数的信息
func_get_arg() —— 通过索引获取对应的参数
func_get_args() —— 获取参数并保存在数组中
func_num_args() —— 返回传入数据个数
<?php
function funs6 () {
echo "<br>".func_get_arg(2)."<br>";//99
echo func_get_args()."<br>";//Array
echo func_num_args()."<br>";//4
};
funs6(55,88,99,66);
?>
递归函数
函数自己调用自己
<?php
function funs7 ($a){
if( $a > 0)
{
echo $a;
funs7($a - 1);
}
else{
echo "结束";
}
}
funs7(5);// 5 4 3 2 1 结束
?>
注意:
- 递归函数被调用的执行过程中会在内存里面分配空间用于存储临时数据
- 递归函数需要有有结束函数的条件
内置函数
PHP有很多现成的函数或者结构,可以在直接使用
echo(),include(),include_once(),require(),require_once(),这些函数可以省略括号,严格意义上讲不是函数,因此不可复制黑另外的变量
还有一些函数需要开启特定地PHP扩展模块,否则无法使用这些函数
匿名函数
也叫闭包函数
<?php
$a = function (){
echo "good";
};
$a;
?>
网友评论