「PHP/Webアプリケーション向けの機能」の版間の差分
削除された内容 追加された内容
→条件分岐以外の話題: 末尾に移動 タグ: 2017年版ソースエディター |
→match: PHPのmatchは、switchと似ていますが、文ではなく式なので値が取れるほか、比較には「厳密な比較」が使われます。 matchには、代替構文も埋込み構文もありません。 タグ: 2017年版ソースエディター |
||
193 行
=== match ===
PHPのmatchは、switchと似ていますが、文ではなく式なので値が取れるほか、比較には「[[#厳密な比較|厳密な比較]]」が使われます。
;コード例:<syntaxhighlight lang=php>▼
matchには、代替構文も埋込み構文もありません。
;[https://paiza.io/projects/hNIrTpNJmW_EozfBVP4HJQ?language=php 例]:<syntaxhighlight lang=php>
<?php
$s = "as";
echo match ($s) {
"abstract" => "KW_abstract",
"and" => "KW_and",
"as" => "KW_as",
default => "Unknown",
},
PHP_EOL;
?>
</syntaxhighlight>
:[[#switch]]の例と同じロジックです。簡素にかけていますが、
<?php
$s = "as";
$hash = [
"abstract" => "KW_abstract",
"and" => "KW_and",
"as" => "KW_as",
];
echo isset($hash[$s]) ? $hash[$s] : "Unknown", PHP_EOL;
?>
</syntaxhighlight>▼
:::と書いたほうがより簡素だと考えるひともいるでしょう。
::また、<code>=></code>の右には「式」が要求されるので、<code>echo</code>のようなコマンドは使えません。
<?php
$age = 18;
echo "{$age}歳は",
match (true) {
$age < 1 => "乳児",
$age < 6 => "幼児",
$age < 18 => "少年",
default => "成人",
},
"です。",
PHP_EOL;
?></syntaxhighlight>▼
::こんな事もできます。
;基本構文:<syntaxhighlight lang=php>
</syntaxhighlight>
;代替構文:
;埋込構文:(ありません)
▲</syntaxhighlight>
▲;埋込構文:<syntaxhighlight lang=php>
▲</syntaxhighlight>
== 2つの比較演算子 ==
|