PHP: match | 您所在的位置:网站首页 › php品牌 › PHP: match |
match
(PHP 8) match 表达式基于值的一致性进行分支计算。 match表达式和 switch 语句类似, 都有一个表达式主体,可以和多个可选项进行比较。 与 switch 不同点是,它会像三元表达式一样求值。 与 switch 另一个不同点,它的比较是严格比较( ===)而不是松散比较(==)。 Match 表达式从 PHP 8.0.0 起可用。 示例 #1 match 表达式结构 示例 #2 match 的基础用法 以上示例会输出: string(19) "This food is a cake"注意: 不一定要使用 match 表达式的结果。 注意: match 表达式必须使用分号 ; 结尾。 match 表达式跟 switch 语句相似,但是有以下关键区别: match 比较分支值,使用了严格比较 (===), 而 switch 语句使用了松散比较。 match 表达式会返回一个值。 match 的分支不会像 switch 语句一样, 落空时执行下个 case。 match 表达式必须彻底列举所有情况。match 表达式和 switch 语句类似, 逐个检测匹配分支。一开始不会执行代码。 只有在所有之前的条件不匹配主体表达式时,才会执行剩下的条件表达式。 只会执行返回的表达式所对应的匹配条件表达式。 举例: match 表达式分支可以通过逗号分隔,包含多个表达式。 这是一个逻辑 OR,当多个分支表达式右侧相同时,就可以用这种缩写。
default 模式是个特殊的条件。 当之前的条件都不匹配时,会匹配到该模式。 For example: 注意: 多个 default 模式将会触发 E_FATAL_ERROR 错误。 match 表达式必须详尽列出所有情况。 如果主体表达式不能被任意分支条件处理, 会抛出 UnhandledMatchError。 示例 #3 match 表达式存在未处理的示例 以上示例会输出: object(UnhandledMatchError)#1 (7) { ["message":protected]=> string(33) "Unhandled match value of type int" ["string":"Error":private]=> string(0) "" ["code":protected]=> int(0) ["file":protected]=> string(9) "/in/ICgGK" ["line":protected]=> int(6) ["trace":"Error":private]=> array(0) { } ["previous":"Error":private]=> NULL } 使用 match 表达式处理非一致性检查可以使用 match 表达式将 true 作为主项表达式来处理非一致性条件的情况。 示例 #4 针对整数范围,使用宽泛的表达式匹配分支 以上示例会输出: string(11) "young adult"示例 #5 针对字符串内容,使用宽泛的表达式匹配分支 以上示例会输出: string(2) "fr" |
CopyRight 2018-2019 实验室设备网 版权所有 |