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

ナビゲーションに移動 検索に移動
→‎スカラ値つきのenum: さて、enumで定義した整数値を使って計算したい場合、下記のように<code>->value</code>プロパティで代入値にアクセスする必要があります。
(→‎スカラ値つきのenum: 修正。nameプロパティは要素名へのアクセスだった)
(→‎スカラ値つきのenum: さて、enumで定義した整数値を使って計算したい場合、下記のように<code>->value</code>プロパティで代入値にアクセスする必要があります。)
enum に整数型(int)または文字列型(string)の値をつけることが可能です。
 
enumの要素に関連づけられた数値にアクセスする場合、下記コードのように <code>->value</code> が必要です。これは整数型でも文字列型でも、ともに <code>->value</code> です。なお int も string もつけず <code>->value</code>でアクセスするのは非推奨であり、警告されます。(<code>Warning: Undefined property:</code> などの文字列。またintを宣言せずにenumを使用した場合に各要素の代入される数値は現状、0,1,2,3・・・'''ではない'''です。なので、値つき宣言して無い場合には、代入値の順番や大小などは一切当てにしないのが安全でしょう。)
 
なお、enum要素名(下記コード例でなら"buki"や"tate"の部分のこと)にアクセスする場合には <code>->name</code>になります。
 
なおそのほか、enum要素名(下記コード例でなら"buki"や"tate"の部分のこと)にアクセスする場合には <code>->name</code> になります。現状、<code>->name</code> プロパティはint宣言やstring宣言とは無関係に使えます。
valueというプロパティは、enumをintまたはstringに関連づけて宣言しおえた段階までに自動で生成されます。よって、プログラマー側でvalueプロパティを宣言する必要はありません。nameプロパティも同様です。
 
つまり valueというプロパティは、enumをintまたはstringに関連づけて宣言しおえた段階までに自動で生成されます。よって、プログラマー側でvalueプロパティを宣言する必要はありません。nameプロパティも同様宣言の必要は無いです。
 
また、<code>value</code>以外のデタラメな文字列(たとえば「vabqe」)とかのプロパティを書いてもエラーになります。
?>
</syntaxhighlight>
:(※ 2021年11121803日にPHP8.1-RC6 リリース版を、Fedora 35上でビルドして動作確認。)
 
 
なお、C言語やPythonなど他の一部の言語では自動的にスカラー値を付ける機能があるのですが、しかしPHPでは現状ではまだそのような機能や仕様は知られていません(2021年に本文を記述)。なおC言語ではこのような機能があるので、switch文のラベルの番号付けの省略としてenumを応用する例が有名です。
 
さて、enumで定義した整数値を使って計算したい場合、下記のように<code>(int)->value</code>命令などプロパティ型変換代入値にアクセスする必要があります。
 
コード例
}?>
</syntaxhighlight>
:(※ 2021年11121803日にPHP8.1-RC6 リリース版を、Fedora 35上でビルドして動作確認。)
 
実行結果
23,379

回編集

案内メニュー