php学习笔记2——流程控制语句

参照《PHP 7从零基础到项目实战》的案例练习。

1.条件控制语句

条件控制语句有两个,分别是:if和switch。

1.1 if条件控制语句

使用格式:

<? php
if(expr) {
	statement_1
} else {
	statement_2
}
?>

示例:

<?php
// 单条件判断
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
?>

1.2switch分支语句

<?php
// 单条件判断
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
?>

2.循环控制语句

循环控制语句是在满足一定条件的情况下反复执行某一操作。PHP种提供4种循环控制语句:while、do while、for和foreach。

2.1while

while循环语句语法的格式:

while(expr) {
	statement
}

当expr的值为true时,执行嵌套的statement语句,expr表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。如果while表达式的值一开始就是false,那么循环语句一次也不会执行。

<?php
// while
$a = 1;
while($a < 10) {
    $a++;
}
echo $a; // 10
?>

2.2do while

<?php
// do while
$i = 0;
do {
    $i++;
    echo $i;
} while($i < 10);
// 12345678910
?>

2.3for

for循环语法的结构:

for (expr1; expr2; expr3) {
	statement
}
Created with Raphaël 2.2.0 start expr1 statement expr3 expr2为假? end yes no

说明:
执行表达式expr1=>执行statement中的代码块=>执行表达式expr3
=>判断expr2条件真假(如果为真,继续执行statement中的代码块=>循环执行expr3=>判断expr2真假;如果expr2为false,终止循环)。

<?php
// for
for($i = 1;$i < 10; $i++) {
    echo $i;
}
// 123456789
?>

2.4foreach

<?php
// 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)
}
?>

3.跳转语句

跳转语句包含:break语句、continue语句和goto语句。

3.1break

<?php
/**
 * break语句用于终止本次循环
 */
for($i = 0; $i < 10; $i++) {
    if($i == 3) {
        break;
    }
    echo $i; // 012
}
?>

3.2continue

<?php
/**
 * continue语句的作用是跳出本次循环,接着执行下一次循环
 */
for($i = 0; $i < 10; $i++) {
    if($i == 3) {
        continue;
    }
    echo $i; // 012456789
}
?>

3.3goto

<?php
/**
 * 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跳出循环
?>

4.包含语句

包含语句用于在php文件中引入另一个文件,这样有利于代码重用。PHP中共有4个包含外部文件的方法,分别是:include、include_once、require、require_once。

4.1include语句

<?php
/**
 * 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:

<?php
$color = "green";
?>

4.2include_once语句

<?php
/**
 * 2.include_once语句
 * include_once语句和include语句类似,唯一的区别是:
 * 如果该文件已被包含,则不会再次包含。
 * include_once可用于在脚本执行期间同一个文件可能被包含多次的情况下,
 * 确保它只被包含一次,以避免函数重定义、变量重新赋值等问题。
 */
include_once 'b.php';
include_once 'b.php';
// 3
?>

b.php:

<?php
$colorb = "blue";
echo __LINE__."\n";
?>

4.3require语句

<?php
/**
 * require语句和include语句几乎完全一样,不同的是:
 * 当被包含文件不存在时,require语句会发出一个Fatal error错误且程序终止执行,
 * include则会发出一个Warning警告但程序会继续执行
 */
require 'a.php';
echo $color;
// green
?>

4.4require_once语句

<?php
/**
 * require_once语句和require语句完全相同,
 * 唯一的区别是:
 * PHP会检查该文件是否已被包含过,如果是则不会再次包含。
 */
require_once 'b.php';
require_once 'b.php';
// 3
?>

猜你喜欢

转载自blog.csdn.net/username666/article/details/106436895
今日推荐