Niveau
..........
En rapport...

Quoi ?

Il existe une méthode qui permet de remplacer des if simple (par simple je veux dire mono-instruction) par une version 'abbrégé'. Par exempe, le code suivant pourrait etre réduit et optimisé :

php
<?php
if ($a=='ok') {
    $b=$a;
} else {
   $b='erreur';
}
?>

Apres optimisation, on obitendrais

php
<?php
$b=($a=='ok')?$a:'erreur';
?>

On voit donc que l'on gagne enormement de place.
Mais, moins visible, on gagne grandement en rapidité d'exécution du script.
Certe la lisibilité peu semblé déroutante au début, mais a force d'utilisation elle deviens totalement naturelle.

Explication

La syntaxe de ce IF réduit est comme ceci :
(expresion a évaluer)?resultat pour l'expresion vérifié:resultat pour l'expression non vérifié
En fait, dans la parenthese, on met le contenu de laparenthse d'un vrai IF
Le ? veut dire 'alors' et le : veux dire 'sinon'
L'instruction qui suit les ? ou le : est a concidéré comme renvoyé par un return.
en effet, ceci n'est pas valide :

php
$a=2;
($a==1)? echo 'plop' : echo 'pouet' ;

il faudrais ecrire :

php
$a=2;
echo ($a==1)? 'plop' : 'pouet';

Exactement comme si on avais fait :

php
function GetEcho($a) {
   if ($a==1)
      return 'plop';
   else
      return 'pouet';
}
$a=2;
echo GetEcho($a);