参照《PHP 7从零基础到项目实战》的案例练习。
条件控制语句有两个,分别是:if和switch。
使用格式:
php
if(expr) {
statement_1
} else {
statement_2
}
?>
示例:
// 单条件判断
if(2 > 1) {
echo 'right';
} else {
echo 'incorrect';
}
echo "\n";
// 输出:right
// 多条件判断
$a = 22;
if($a < 5){
echo '$a is less than 5';
} else if($a >= 5 && $a < 10) {
echo '$a is greater than or equal 5, but less than 10';
} else if($a >= 10 && $a < 20) {
echo '$a is greater than or equal 10, but less than 20';
} else {
echo '$a is greater than or equal 20';
}
// $a is greater than or equal 20
?>
// 单条件判断
if(2 > 1) {
echo 'right';
} else {
echo 'incorrect';
}
echo "\n";
// 输出:right
// 多条件判断
$a = 22;
if($a < 5){
echo '$a is less than 5';
} else if($a >= 5 && $a < 10) {
echo '$a is greater than or equal 5, but less than 10';
} else if($a >= 10 && $a < 20) {
echo '$a is greater than or equal 10, but less than 20';
} else {
echo '$a is greater than or equal 20';
}
// $a is greater than or equal 20
echo "\n";
// switch分支语句
$b = 3;
switch ($b) {
case 1:
echo "\$a is 1";
break;
case 2:
echo "\$a is 2";
break;
case 3:
echo "\$a is 3";
break;
case 4:
echo "\$a is 4";
break;
default:
echo "\$a is not equal 1,2,3,4";
break;
}
// $a is 3
?>
循环控制语句是在满足一定条件的情况下反复执行某一操作。PHP种提供4种循环控制语句:while、do while、for和foreach。
while循环语句语法的格式:
while(expr) {
statement
}
当expr的值为true时,执行嵌套的statement语句,expr表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。如果while表达式的值一开始就是false,那么循环语句一次也不会执行。
// while
$a = 1;
while($a < 10) {
$a++;
}
echo $a; // 10
?>
// do while
$i = 0;
do {
$i++;
echo $i;
} while($i < 10);
// 12345678910
?>
for循环语法的结构:
for (expr1; expr2; expr3) {
statement
}
说明:
执行表达式expr1=>执行statement中的代码块=>执行表达式expr3
=>判断expr2条件真假(如果为真,继续执行statement中的代码块=>循环执行expr3=>判断expr2真假;如果expr2为false,终止循环)。
// for
for($i = 1;$i < 10; $i++) {
echo $i;
}
// 123456789
?>
// foreach
$array = [0, 1, 2, 3];
foreach ($array as $val) {
echo "值是:".$val;
echo "\n";
}
// 值是:0
// 值是:1
// 值是:2
// 值是:3
foreach($array as $key => $value) {
echo "key:".$key." value:".$value;
echo "\n";
}
// key:0 value:0
// key:1 value:1
// key:2 value:2
// key:3 value:3
/**
* 在php5中,当foreach开始循环执行时,每次数组内部指针
* 都会自动向后移动一个单元,但php7中却不是这样。
*/
$array = [0, 1, 2];
foreach ($array as $value) {
var_dump(current($array));
}
// int(0)
// int(0)
// int(0)
/**
* 在php7中,按照值进行循环时,foreach是对数组的复制操作,
* 在循环过程中对数组的修改不会影响环行为,但在php5中会有影响
*/
$array = [0, 1, 2];
foreach ($array as $value) {
var_dump($value);
unset($array[1]);
}
// int(0)
// int(1)
// int(2)
/**
* 在php 7中按照引用循环时对数组的修改会影响循环,而在php 5中则不会改变
*/
$array2 = [0];
foreach ($array2 as $val) {
var_dump($val);
$array2[1] = 1;
$array2[2] = 2;
// int(0)
// int(1)
// int(2)
}
?>
跳转语句包含:break语句、continue语句和goto语句。
/**
* break语句用于终止本次循环
*/
for($i = 0; $i < 10; $i++) {
if($i == 3) {
break;
}
echo $i; // 012
}
?>
/**
* continue语句的作用是跳出本次循环,接着执行下一次循环
*/
for($i = 0; $i < 10; $i++) {
if($i == 3) {
continue;
}
echo $i; // 012456789
}
?>
/**
* goto语句可以用来跳转到程序中的另一个位置。该目标位置使用目标名称加冒号
* 来标记,而跳转指令是goto之后接上目标位置的标记。
* php对goto语句有一定限制,即目标位置只能位于同一个文件和作用域,
* 即无法跳出一个函数或类方法,也无法跳入另一个函数、其他循环或switch结构中。
* 可跳出循环或switch,goto语句常用于代替多层的break语句。
*/
goto a;
echo 'Foo';
a:
echo 'Bar';
// Bar
for($i = 0; $i < 10; $i++) {
if($i == 3) {
goto b;
}
echo $i;
}
b:
echo "跳出循环";
// 012跳出循环
?>
包含语句用于在php文件中引入另一个文件,这样有利于代码重用。PHP中共有4个包含外部文件的方法,分别是:include、include_once、require、require_once。
/**
* 1.include语句
* include语句包含并运行指定文件。
* 寻找被包含文件的顺序:
* 首先按参数给出的路径寻找
* =>如果没有给出目录(文件名),则按照include_path(在配置文件中可查看include_path)指定的目录寻找
* =>如果在include_path下没找到该文件,那么include最后会在调用脚本文件所在的目录和当前工作目录下寻找
* =>如果最后仍未找到文件,include结构将会发出警告。
*/
/**
* 当一个文件被包含时,其中所包含的代码继承了include所在行的变量范围。
* 从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。
* 如果include出现于调用文件中的一个函数中,那么被调用的文件中所包含的所有代码
* 将表现得如同它们是在该函数内部定义的一样。
*/
include 'a.php';
echo '111';
echo $color;
// 111green
include 'b.php';
echo $colorb."\n";
aa();
function aa() {
global $colorb;
echo $colorb;
}
// 3
// blue
// blue
?>
a.php:
$color = "green";
?>
/**
* 2.include_once语句
* include_once语句和include语句类似,唯一的区别是:
* 如果该文件已被包含,则不会再次包含。
* include_once可用于在脚本执行期间同一个文件可能被包含多次的情况下,
* 确保它只被包含一次,以避免函数重定义、变量重新赋值等问题。
*/
include_once 'b.php';
include_once 'b.php';
// 3
?>
b.php:
$colorb = "blue";
echo __LINE__."\n";
?>
/**
* require语句和include语句几乎完全一样,不同的是:
* 当被包含文件不存在时,require语句会发出一个Fatal error错误且程序终止执行,
* include则会发出一个Warning警告但程序会继续执行
*/
require 'a.php';
echo $color;
// green
?>
/**
* require_once语句和require语句完全相同,
* 唯一的区别是:
* PHP会检查该文件是否已被包含过,如果是则不会再次包含。
*/
require_once 'b.php';
require_once 'b.php';
// 3
?>
往期文章: