制御構造

制御構造には、if, for, while, switch 等があります。 最も複雑な制御構造である if 文の例を示します。

<?php
if ((condition1) || (condition2)) {
    
action1;
} elseif ((
condition3) && (condition4)) {
    
action2;
} else {
    
defaultaction;
}
?>

制御構造では、関数コールと区別するために、 制御キーワードと開きカッコの間に空白を 1 つ置きます。

構文的に省略可能な場合でも、波カッコを使用することを推奨します。 波カッコを付けることにより可読性が向上し、 新しく行を追加した際に論理的なエラーが紛れこむ可能性が減少します。

switch 文の場合は次のようにします。

<?php
switch (condition) {
case 
1:
    
action1;
    break;

case 
2:
    
action2;
    break;

default:
    
defaultaction;
    break;

}
?>
インデント (Previous) 関数コール (Next)
Last updated: Fri, 28 Nov 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

Note by: Pistachio
The documentation says "You are strongly encouraged to always use curly braces even in situations where they are technically optional." But then proceeds to list a switch statement contrary to that statement. So the statement should withdrawn or the example should be modified as follows:

switch(condition) {
case 1:{
action;
break;
}
...
}
Note by: hipertracker
Original PEAR standards for control structures are OK. I hate wasting screen space for nasty constructs like

switch ($x)
{
case

...

if even worse (used in CodeIgniter)

if ()
{
...
}
else
{
...
}

That looks like shit. PHP is already ugly anough, don't make it worse.
Note by: temhawk
I don't use PEAR, and I am an unexperienced programer, but I think coding standards, for the purpose of both readability/understandability and reliability, are important.

I wanted to add that I find it much easier to read an if-statement, when there is an empty line above the condition.

e.g. (random code taken out of my current project)

date_default_timezone_set("Europe/Dublin");
$logFile = (@include_once "config.php") == true ? LOG_FILE : $_SERVER["DOCUMENT_ROOT"] . "/error_log.txt";

if ($fh = @fopen($logFile, "a"))
{
fwrite($fh, date("c") . "\n" . strip_tags($errorMsg) . "\n\n");
fclose($fh);
}

In combination with the two curly braces on their own lines, it makes the condition stand out more, and easier to spot such a logical struture in a file with much code.
Note by: acmpires@sapo.pt
I think that the "if" control structure is more readable this way:

if ($condition1) {
// some code
}
elseif ($condition2) {
// more code here
}
else {
// a bit more code
}
Note by: bobvandell@hotmail.com
I'm with Maga on this one. That's how I've been doing it for years.
Indent from the case so that the case it's self stands out.
Note by: blackid
My strong belief is still that this would add a nice way to represent loops...

switch (condition)
{
case 1;
action 1;
break1;

case 2;
action 2;
break2;
}

This makes the system much more readable and easy to understand. Every indent specifies a child. and two indents is especially useful when you are reading about 100 lines of code. It truely helps!
Note by: Maga
I think that better is:

<?php
switch (condition
{
    case 
1:
        
action1;
        break;

    case 
2:
        
action2;
        break;

    default:
        
defaultaction;
        break;
}
Indentation+Brakes
?>
Note by: wiesemann
Phil, the indentation like in your example (i.e. with 4 spaces for the "case" statements) is also accepted in the PEAR coding standards.
Note by: phil@signalz.com
I would have expected more indentation, like this
<?php
switch (condition) {
    case 
1:
        
action1;
        break;

    case 
2:
        
action2;
        break;

    default:
        
defaultaction;
        break;
}
?>


Note by: dpn12@comcast.net
Might you consider adding to your current K&R format, below

...
switch (condition) {
case 1:
action1;
break;

case 2:
action2;
break;

}
...


/**/

...
switch (condition)
{
case 1:
action1;
break;

case 2:
action2;
break;
}
...


this above format that some believe to be more readable?