Signification d'une ligne de code en PHP

Signification d'une ligne de code en PHP - PHP - Programmation

Marsh Posté le 27-02-2006 à 10:48:15    

Bonjour
 
je voudrais savoir si quelqu'un peut m'expliquer ce que fait cette ligne de code:
<?php echo((isset($idr) && $idr == $code_clients[$i])?" selected=\"selected\"":null); ?>
 
et celle là aussi: $idr = isset($_POST['Nom'])?$_POST['Nom']:null;  
 
je comprend pas trop le role du  null et du point d'interrogation.
 
merci

Reply

Marsh Posté le 27-02-2006 à 10:48:15   

Reply

Marsh Posté le 27-02-2006 à 10:53:04    

la structure

Code :
  1. instruction1 ? instruction2 : instruction3


Veut dire la même que

Code :
  1. if (instruction1) {
  2.     instruction2;
  3. }else{
  4.     instruction3;
  5. }


Le fait de mettre la premiére structure entre parentaise avec un "echo" devant veut simplement dire qu'on va afficher la valeur retourné par "instrucion2" ou par "instruction3" en fonction du résultat de "instruction1".
 
J'espére avoir été assez clair dans l'explication bien que je ne suis pas sur de l'avoir été.

Message cité 1 fois
Message édité par omega2 le 27-02-2006 à 10:53:22
Reply

Marsh Posté le 27-02-2006 à 10:54:42    

(machin && truc==true)?"yes":"no"
 
veut dire:
 
si (machin && truc==true) est vrai, on renvoie "yes", sinon on renvoie "no".
 
Donc pour ta 1e ligne si $idr est une variable initialisée et qu'elle vaut $code_client[$i], alors on ajoute l'attribut selected (à une checkbox j'imagine), sinon rien.

Reply

Marsh Posté le 27-02-2006 à 10:58:27    

omega2 a écrit :

la structure

Code :
  1. instruction1 ? instruction2 : instruction3


Veut dire la même que

Code :
  1. if (instruction1) {
  2.     instruction2;
  3. }else{
  4.     instruction3;
  5. }



Pas exactement non, dans le cas de l'expression ternaire le résultat de l'évaluation des branches est renvoyé, pas dans un if/else classique


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 27-02-2006 à 11:06:25    

goueg a écrit :

(machin && truc==true)?"yes":"no"
 
veut dire:
 
si (machin && truc==true) est vrai, on renvoie "yes", sinon on renvoie "no".
 
Donc pour ta 1e ligne si $idr est une variable initialisée et qu'elle vaut $code_client[$i], alors on ajoute l'attribut selected (à une checkbox j'imagine), sinon rien.


 
merci, j'ai compris pour le null, mais je vois toujours pas à quoi sert le point d'interrogation.

Reply

Marsh Posté le 27-02-2006 à 11:07:31    

Sinon j'ai rien compris pour le if et le else de masklinn :-(

Reply

Marsh Posté le 27-02-2006 à 11:10:41    

c'est la syntaxe de l'operateur ternaire qui est faite comme ca:
? = true
: = false
 
sinon j'ai pas bien compris non plus, je crois qu'il veut dire que l'ensemble du ternaire renvoie son etat (true ou false) alors qu'un ensemble if else ne renvoie rien...


---------------
D3
Reply

Marsh Posté le 27-02-2006 à 11:11:56    

chrif a écrit :

merci, j'ai compris pour le null, mais je vois toujours pas à quoi sert le point d'interrogation.


bin avant le "?" tu as le test (qui sera vrai ou faux)
entre le "?" et le ":" tu as ce qui est renvoyé si le test est vrai
après le ":" tu as ce qui est renvoyé si le test est faux

Reply

Marsh Posté le 27-02-2006 à 11:13:02    

masklinn disait juste que (par exemple) faire un  

Code :
  1. echo if ...

n'affichera rien vu que le if ne fournira aucune valeur au "echo" tandisque qu'avec la structure basé sur le "?" et le ":" renvéra soit le résultat de ce qui est entre le "?" et le ":" soit ce qui est entre le ":" et le ";" suivant.
 
Une "expression ternaire" est une expression qui a trois membre. Dans le cas présent, ce qui est avant le "?" ce qui est entre le "?" et le ":" et ce qui est aprés le ":".

Reply

Marsh Posté le 27-02-2006 à 11:14:16    

un exemple:
 
<body><?=(true?"yes":"no" )?></body>
 
donnera après l'exécution du PHP:
<body>yes</body>
 
alors que <body><?=(false?"yes":"no" )?></body>
donnera
<body>no</body>

Reply

Marsh Posté le 27-02-2006 à 11:14:16   

Reply

Marsh Posté le 27-02-2006 à 11:14:59    

autant pour moi...
ca renvoi pas l'etat general de l'operateur mais ce qui se trouve entre ? et : ou entre : et ; suivant la condition...


---------------
D3
Reply

Marsh Posté le 27-02-2006 à 11:23:33    

Merci beaucoup, j'ai bien compris.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed