2010-07-16 8 views
3

j'ai vu l'extrait de code suivant:Quelle est l'utilisation de ":" dans les instructions if et else?

<?php 
if(!empty($_POST)): // case I: what is the usage of the : 
if(isset($_POST['num']) && $_POST['num'] != ''): 

$num = (int)$_POST['num']; 

.... 

if($rows == 0): 
echo 'No'; 

else: // case II: what is usage of : 
echo $rows.'Yes'; 

endif; 

Je voudrais savoir ce que l'utilisation de « : » dans le code php est.

+0

J'ai ouvert cette question en pensant que ce serait d'une sorte d'opérateur ternaire arrière –

Répondre

8

C'est le alternative syntax for control structures.

Alors

if(condition): 
    // code here... 
else: 
    // code here... 
endif; 

est équivalent à

if(condition) { 
    // code here... 
} else { 
    // code here... 
} 

Cela peut venir très pratique lorsque le traitement avec HTML. Imho, il est plus facile à lire, parce que vous n'avez pas besoin de chercher des accolades {} et le code PHP et HTML ne se sentent pas mélangés. Exemple:

<?php if(somehting): ?> 

    <span>Foo</span> 

<?php else: ?> 

    <span>Bar</span> 

<?php endif; ?> 

Je ne voudrais pas utiliser la syntaxe alternative dans le code PHP "normal" bien, car ici les accolades offrent une meilleure lisibilité.

+0

est-ce pas plus difficile à lire et plus d'erreurs si vous avez imbriqué si/ELSES? –

+0

Je pense que c'est subjectif. Je trouve plus facile de repérer un ' 'en HTML que' ', simplement parce qu'il prend plus de place. –

3

Cet opérateur : principalement utilisé dans le codage intégré de php et html. En utilisant cet opérateur, vous pouvez éviter l'utilisation d'une accolade. Cet opérateur réduit la complexité du codage intégré. Vous pouvez utiliser cet opérateur : avec si, alors que, pour, foreach et plus ...

Sans ':' opérateur

<body> 
<?php if(true){ ?> 
<span>This is just test</span> 
<?php } ?> 
</body> 

Avec ':' opérateur

<body> 
<?php if(true): ?> 
<span>This is just test</span> 
<?php endif; ?> 
</body> 
0

La seule fois J'utilise un deux-points est dans la déclaration sténographique if-else

$var = $bool ? 'yes' : 'no'; 

Ce qui est équivalent à:

if($bool) 
$var = 'yes'; 
else 
$var = 'no'; 
+1

L'instruction * sténo-if-else * est appelée [** opérateur ternaire **] (http://en.wikipedia.org/wiki/Ternary_operation). –

+0

@Felix Merci pour l'info! –