[Day9]PHP判断式02

PHP判断式

break

break 结束当前 for,foreach,while,do-while 或者 switch 结构的执行。

break可以接受一个可选参数,来决定要跳出几层回圈。

以下为范例:

<?php
$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
// 使用each() 和list() 结合用来遍历数组
while (list (, $val) = each($arr)) {
    if ($val == 'stop') {
        break;    /* You could also write 'break 1;' here. */
    }
    echo "$val<br />\n";
}

/* 使用可选参数 */

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "At 5<br />\n";
        break 1;  /* 只退出 switch. */
    case 10:
        echo "At 10; quitting<br />\n";
        break 2;  /* 退出 switch 和 while 循环 */
    default:
        break;
    }
}
?>

continue

continue 在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循环。

以下为范例:

<?php
for($i=1; $i<5; $i++){
    if($i==2){
        continue;
    }
    echo "$i\n";  // outputs: 1 3 4
}
?>

switch

switch 语句类似於具有同一个表达式的一系列 if 语句。很多情况下需要把同一个变数(或表达式)与很多不同的值比较,并根据它等於哪个值来执行不同的代码。

以下为范例,利用if/else if 和 switch实现不同方法实现相同的事:

<?php
if ($i == 0) {
    echo "i equals 0";
} elseif ($i == 1) {
    echo "i equals 1";
} elseif ($i == 2) {
    echo "i equals 2";
}

switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}
?>

一个 case 的特例是 default。它匹配了任何和其它 case 都不匹配的情况。例如:

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo "i is not equal to 0, 1 or 2";
}
?>

match

与switch语句类似, match表达式具有与多个备选方案进行比较的主题表达式,与switch不同,它将计算为一个很像三元表达式的值。与switch不同的是,比较的是强型别相等检查 (===) 而不是弱型别相等检查 (==)。匹配表达式从 PHP 8.0.0 开始可用。

范例如下:

<?php

$age = 23;

$result = match (true) {
    $age >= 65 => 'senior',
    $age >= 25 => 'adult',
    $age >= 18 => 'young adult',
    default => 'kid',
};

var_dump($result);
echo($result);
?>

// outputs:
// string(11) "young adult"
// young adult

declare

declare不是一个函数,算是一个语言结构

declare用来设定一段code的执行指令。

declare (directive)
statement

directive的部分允许设定declare代码段的行为。

如果declare 语句後面没有括号,则该指令适用於文件中的其余代码。
以下为范例:

<?php
// 两个相等:

// 可以这样用:
declare(ticks=1) {
    // 这里写脚本
}

// 也可以这样用:
declare(ticks=1);
// 这里写脚本
?>

declare指令是在文件编译时处理的,所以指令只接受字面量的值。 无法使用变量和常量。下面为范例程序码:

<?php
// 有效程序码:
declare(ticks=1);

// 无效,无法指定常量:
const TICK_VALUE = 1;
declare(ticks=TICK_VALUE);
?>

可以声明三个指令:ticks,encoding和 strict_types.

ticks每次执行指定数量(N)可计时的指令时,该指令都会发送一个tick事件。可以使用register_tick_function() ,它会在每次event事件触发时运行。

不是所有语句都可计时。通常条件表达式和参数表达式都不可计时。

以下为范例:

<?php

declare(ticks=1);

// 每次 tick 事件都会调用此函数
function tick_handler()
{
    echo "tick_handler() called\n";
}

register_tick_function('tick_handler');

$a = 1;

if ($a > 0) {
    $a += 2;
    print($a);
}

?>

该encoding指令用於指示文件使用的字符编码。它不能用於块,它必须应用於整个文件。

<?php
declare(encoding='ISO-8859-1');
// code here
?>

当strict_types指令设置,错误类型传递到函数参数时不会被强制转换为正确的类型,而是抛出致命错误。

范例如下:

// 正常情况下
<?php
function add(int $a, int $b): int
{
    return $a + $b;
}

var_dump(add(1.0, 1.0));

// output
// int(2)

当使用strict_types後,变成强型别

<?php
declare(strict_types=1);    //加入这句

function add(int $a, int $b): int
{
    return $a + $b;
}

var_dump(add(1.0, 1.0));

// 抛出TypeError:必须为integer整数

资料来源: https://www.php.net/


<<:  Day11 javascript while循环

>>:  【Day8】在本地简单的建立 django(Django API Server的架设 1/3)

Kneron - Kneron Toolchain 转档操作参考笔记

Kneron - Kneron Toolchain 转档操作参考笔记 参考资料 onnx 档案来源:...

D8 - 如何用 Google Apps Script 将 Google Calendar 上的事件与更新全部列出到 Google Sheet 上?

来到了第 8 天。但一样先讲结论,如果你很急着用,可以直接使用这份 Add-On: Calendar...

【DAY 05】HTML 标签的基本元素(二)

前言 忘记一天要发一篇,被自己笨死~~虽然中断了但我还是把它完成吧。 今天一样继续HTML语法吧 超...

从零开始的8-bit迷宫探险【Level 13】主角总是孤独的

「呀!呀!」一只乌鸦飞了过去,因为视线不明,让移动的黑影更加引人遐想。 在这诺大的森林里,就只有山...

Day24:今天我们来聊一下Azure Sentinel中使用的关注清单

Azure Sentinel提供资料表来储存可供Kusto查询语言(KQL)查询存取的清单资料。 A...