Structures de Contrôles

Les structures de contrôles incluent les 'if', 'for', 'while', 'switch', etc. Vous trouverez ici un exemple de structure 'if' qui est la plus compliquée :

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

Les instructions de contrôle doivent avoir un espace entre le mot clé de l'instruction et la parenthèse ouvrante, afin de les distinguer des appels de fonctions.

Il est vivement recommandé de toujours utiliser des accolades, même dans les situations où elles sont techniquement optionnelles. Leur présence augmente la lisibilité du code et réduit le risque d'erreur logique lors de l'ajout de nouvelles lignes de code.

Pour l'instruction 'switch' :

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

case 
2:
    
action2;
    break;

default:
    
le job par defaut;
    break;
}
?>

Indentation et longueur de lignes (Previous) Appels de Fonctions (Next)
Last updated: Sun, 29 Aug 2010 — 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?