LoginSignup
35
26

More than 3 years have passed since last update.

PHP: コロン構文(初心者向け)

Last updated at Posted at 2020-09-28

if while for foreach switch に関する別の構文がコロン構文です。

公式: 制御構造に関する別の構文

基本的な考え方

各構造において開き波括弧をコロン:閉じ波括弧をそれぞれ endif;,endwhile;, endfor;,endforeach;,endswitch;に変更するのが コロン構文の基本的な形式となります。

sample_通常使わない形ですが、コロン構文の基本形はこうなります。
<?php
if ($a == 5):
    echo 'aは5に等しい';
else:
    echo 'aは5と等しくない';
endif;
?>

タグとコロン構文の融合(重要)

if 文(公式)

sample_if
<?php
if ($a == 5) {
    echo 'aは5と等しい';
} else {
    echo 'aは5と等しくない';
}
?>
コロン構文
<?php if ($a == 5): ?>
aは5に等しい
<?php else: ?>
aは5と等しくない
<?php endif; ?>

foreach 文(公式)

sample_foreach
<?php
$users = [0 => ['name' => 'ichiro'],
          1 => ['name' => 'jiro'],
          2 => ['name' => 'saburo'], //最後のカンマはあってもなくても可(PHP5.4~)
];
foreach ($users as $user) {
    echo $user['name'] . '<br>';
}
?>
コロン構文1
<?php foreach ($users as $user): ?>
<?= $user['name'] . ','; ?>
<?php endforeach; ?>              //-> ichiro,jiro,saburo,

コロン構文2: foreachとif
<?php foreach ($users as $user): ?>
<?php if ($user['name'] == 'jiro'): ?>
<?= $user['name']; ?>
<?php endif; ?>
<?php endforeach; ?>              //-> jiro

switch 文(公式)

sample_switch
<?php
$user = 'ichiro';
switch ($user) {
    case 'ichiro':
        echo 'イチロー';
        break; 
    case 'jiro':
        echo 'ジロー';
        break; 
}                              //-> イチロー
?>
コロン構文: インデントを入れると無効なコードになる
<?php switch ($user): ?>
<?php case 'ichiro': ?>
イチロー
<?php break; ?>
<?php case 'jiro': ?>
ジロー
<?php endswitch; ?>             //-> イチロー

while 文(公式): 参考

sample_while_コロン構文
<?php $i = 0; ?>
<?php while ($i <= count($users) - 1): ?>
<?= $i . ':' . $users[$i]['name'] . ','; ?>
<?php $i++; ?>
<?php endwhile; ?>              //-> 0:ichiro,1:jiro,2:saburo,

for 文(公式):参考

sample_for_コロン構文
<?php for ($i = 0; $i <= count($users) - 1; $i++): ?>
<?= $i . ':' . $users[$i]['name'] . ','; ?>
<?php endfor; ?>              //-> 0:ichiro,1:jiro,2:saburo,

endの後のセミコロンについて

<?php endif; ?> or <?php endif ?> ??
公式を眺めているとなしの省略形を多用していますが、統一感があればどちらでもいいと思います

セミコロン
コロン構文の基本形
<?php
if ($a == 5):
----
endif;          //-> セミコロンあり
?>
タグと融合している形
<?php if ($a == 5): ?>
----
<?php endif; ?>  //-> セミコロンなしは省略形

注: できるだけ短く記述するために、ショートタグ<?=を使っています。
<?=<?php echoの省略形です。

LGTMお願いします!
モチベーションがあがります!

35
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
26