「PHP/条件分岐」の版間の差分

→‎enum と match 式: 見出しレベルのtypoついでに加筆
(→‎列挙型: == enum と match 式 == match式に enum 専用の機能は用意されていません。ですが、enum の name プロパティから要素名(文字列型である)にアクセスできることと、)
(→‎enum と match 式: 見出しレベルのtypoついでに加筆)
</pre>
 
=== enum と match 式 ===
match 式の変数と条件式には、下記のように enum変数を入れることも出来ます。このため、下記のように書けます。
match式に enum 専用の機能は用意されていません。ですが、enum の name プロパティから要素名(文字列型である)にアクセスできることと、match式では文字列型も条件式に使えることを組み合わせることで、下記コードのようにenumとmatch式を普通に連動させられます。
 
<syntaxhighlight lang="PHP">
<?php
// 装備画面
enum soubiMode // : int を忘れないように
{
case buki ; // 武器
case tate ; // 盾
case kabuto ; // かぶと
}
 
 
$a = soubiMode::buki ; // 区別のため buki に変更
 
match ($a) {
soubiMode::buki, soubiMode::tate => print("{$a->name}データベースを編集。" . "\n"),
soubiMode::kabuto => print("カブトのデータベースは未作成。" . "\n"),
default => print("宣言されてない装備にアクセスしました。" . "\n") ,
 
};
 
?>
</syntaxhighlight>
 
実行結果
<pre>
bukiデータベースを編集。
</pre>
 
 
その他、matchの各条件(「soubiMode::kabuto」の部分)をもっと短く書きたい場合、下記コードのように、enum要素名をつかって条件分岐する方法もあります。
 
<syntaxhighlight lang="PHP">
<?php
// 装備画面
enum soubiMode
{
case buki ; // 武器
23,070

回編集