Leçon N° 03 : Opérateurs
Testez vous-même un opérateur*
-
Notes de page
Source: lesson_03_test.phpRésultat
<?php
//cet exercice fonctionne tel quel en local
//hors mis la mise en page
empty($_SESSION)? session_start():print"";
ini_set("default_charset" "UTF-8") ;
if (isset(
$_REQUEST['opType']))
{
    
$_SESSION["opType"] = $_REQUEST['opType'];
    
$opType =  $_REQUEST['opType'];
}
else
{
    
$opType "Tous";
    
$_SESSION['opType'] = $opType;
}
?>    
<!--<link rel='stylesheet' 
href='../style_sheets/style_exercises.css' 
  type='text/css' />-->
<?php
$operators 
"";
load_array($operators);
$actFile="../commons/show_exercises.php";
$exefile="lesson_03_test.php";
$curFile=basename($_SERVER['PHP_SELF']);
global 
$curFile$actFile$exefile$operators;
//on fait en sorte que l'exercice marche en local
if ($curFile == "lesson_03_test.php")
{
  echo 
  
"<form action=$_SERVER[PHP_SELF]?opType=$opType";
}
else
{
  echo 
"<form action=
  
$actFile?exercise=$exefile&opType=$opType"
}
echo 
" method=post>";
//------------------------------------------
switch ($opType)
{
//--------------------
case "Affectation" 
    
$title "<h3>Opérateurs d'affectation</h3>";
    echo 
$title;
    if (!isset(
$_REQUEST['var_1']))
    {
    
?>Vous pouvez saisir une valeur pas forcement 
    numérique :<br />Format : "Valeur de gauche" 
    "Opérateur""Valeur de droite"<br />
    Les valeurs non numériques doivent être entre 
    guillemets
    <table class=exercises>
    <tr><td class=exercises>Valeur de droite</td>
            <td class=exercises> 
            <input type="text" name="var_1">
              </td></tr>
    <tr><td class=exercises>Valeur gauche intiale
              </td>
            <td class=exercises> 
            <input type="text" name="var_2">
              </td></tr>
    <tr><td class=exercises  colspan=2 align=right>
            <input type="submit" 
            name="send_values" value="Envoyer"> 
            </td></tr></table>
    </form>
    <?php
    
}
    else
    {
    
$var_1  $_REQUEST['var_1'] ;
    if (!isset(
$_REQUEST['var_2']))
    {
            
$var_2 ;
    }
    echo 
'<table class=exercises><tr>
    <th class=params><small>Opér.</th>
    <th class=comments><small>Nom</th>
    <th class=inputs><small>Valeur<br />de gauche
      </th>
    <th class=inputs><small>Valeur<br />de droite
      </th>
    <th class=params><small>Opération</th>
    <th class=outputs><small>Résultat</th>
    <th class=outputs><small>Résultat après<br />
      nouvelle <br />affectation</small></th></tr>'
;
    foreach(
$operators as $keyLevel_1 => $dataLevel_1)
    {
        
//echo $dataLevel_1[0]."<br />";
        
if ($dataLevel_1[0] == $opType)
        {
          
$var_1  $_REQUEST['var_1'] ;
          
$concat_  $_REQUEST['var_2'] ;
          echo 
"<td class=params>$dataLevel_1[1]
              </td>"
;
          echo 
"<td class=comments><small> 
              
$keyLevel_1 </small></td>"
          echo 
"<td class=inputs>$concat_</td>";
          echo 
"<td class=inputs>$var_1</td>";    
          
$concat $dataLevel_1[3].$var_1 ;
          
//on execute l'expression avec eval
          
eval("\$concat_    $concat;" );  
          echo 
"<td class=params>".
            
$_REQUEST['var_2'].$concat."</td>";
          echo 
"<td class=outputs>
            
$concat_</td>";
          eval(
"\$concat_    $concat;" );  
          echo 
"<td class=outputs>
            
$concat_</td>";    
          echo 
"<tr>";
        }
        }
        echo 
"</table>";     
    }
    break;
//----------------------------------------
case "Arithmétique" 
    
$title "<h3>Opérateurs arithmétiques</h3>";
    
$var_1_message "Valeur de gauche (numérique)";
    
$var_2_message "Valeur de droite (numérique)";
    if (!isset(
$_REQUEST['var_1']))
    {
        
form_2($title,$var_1_message,$var_2_message);
    }
    else
    {
      echo 
$title;
      
$var_1 str_replace("," "." $_REQUEST['var_1']);
      if (!isset(
$_REQUEST['var_2']))
      {
              
$var_2 ;
      }
      else
      {
      
$var_2=str_replace("," "." $_REQUEST['var_2']);
      
strtr($var_2,",",".");        
      }
      
$var_1 clear_not_numeric($var_1);
      
$var_2 clear_not_numeric($var_2);
      echo 
'<table class=exercises><tr>
      <th class=params>Opérateur</th>
      <th class=comments>Nom</th>
      <th class=inputs>Valeur saisie <br />(gauche)</th>
      <th class=inputs>Valeur saisie <br />(droite)</th>
      <th class=params>Opération</th>
      <th class=outputs>Résultat</th></tr>'
;
      foreach(
$operators as $keyLevel_1 => $dataLevel_1)
      {
          if (
$dataLevel_1[0] == $opType)
          {
          echo 
"<td class=params>$dataLevel_1[1]
            </td>"
;
          echo 
"<td class=comments><small> 
              
$keyLevel_1 </small></td>";
          echo 
"<td class=inputs>$var_1</td>";
          echo 
"<td class=inputs>$var_2</td>";
          
$concat $var_1.$dataLevel_1[3].$var_2 ;
          
//on execute l'expression avec eval
          
eval("\$concat_   = $concat;" );  
          echo 
"<td class=params>$concat</td>";
          echo 
"<td class=outputs>$concat_</td>";
          echo 
"<tr>";
          }
      }
      echo 
"</table>";     
    }
break;
//--------------------
case "Binaires" 
    
$title "<h3>Opérateurs binaires</h3>";
    
$var_1_message "Valeur de gauche (numérique base 10)";
    
$var_2_message "Valeur de droite (numérique base 10)";
    if (!isset(
$_REQUEST['var_1']))
    {
            
form_2($title,$var_1_message,$var_2_message);
    }
    else
    {    
            echo 
$title;
            
$var_1  $_REQUEST['var_1'] ;
            if (!isset(
$_REQUEST['var_2']))
            {
                    
$var_2 "" ;
            }
            else
            {
                    
$var_2 $_REQUEST['var_2'];
            }
      
show_result_1($var_1,$var_2,$operators,$opType);    
    }
    break;
//--------------------
case "Comparaison" 
    
$title "<h3>Opérateurs de comparaison</h3>";
    
$var_1_message "Valeur de gauche (numérique ou non)";
    
$var_2_message "Valeur de droite (numérique ou non)";
    if (!isset(
$_REQUEST['var_1']))
    {
            
form_2($title,$var_1_message,$var_2_message);
    }
    else
    {    
            echo 
$title;
            
$var_1  $_REQUEST['var_1'] ;
            if (!isset(
$_REQUEST['var_2']))
            {
                    
$var_2 "" ;
            }
            else
            {
                    
$var_2 $_REQUEST['var_2'];
            }
      
show_result_1($var_1,$var_2,$operators,$opType);    
    }
    break;
//--------------------
case "Décalage" 
    
$title "<h3>Opérateurs de décalage de bits</h3>";
    
$var_1_message 
        
"Valeur de gauche (numérique, valeur à décaler)";
    
$var_2_message 
        
"Valeur de droite (numérique, nombre de décalages)";
    if (!isset(
$_REQUEST['var_1']))
    {
            
form_2($title,$var_1_message,$var_2_message);
    }
    else
    {    
            echo 
$title;
            
$var_1  $_REQUEST['var_1'];
            if (!isset(
$_REQUEST['var_2']))
            {
                    
$var_2 "" ;
            }
            else
            {
                    
$var_2 $_REQUEST['var_2'];
            } 
       
show_result_1($var_1,$var_2,$operators,$opType);
    }
    break;
//--------------------
case "Incrémentation" 
    
$title "<h3>Opérateurs d'incrémentation/décrémentation
    </h3>"
;
    echo 
$title;
    if (!isset(
$_REQUEST['var_1']))
    {
        
?> 
        <table class=exercises>
        <tr><td class=exercises>Valeur à incrémenter:
            <br /><small>(Numérique ou alphabétique)</small></td>
            <td class=exercises> 
            <input type="text" name="var_1"></td></tr>
        <tr><td class=exercises>
            <input type="submit" 
                name="send_values" value="Envoyer"> 
        </td></tr></table>
        </form>
        <?php
    
}
    else
    {
        
$var_1  $_REQUEST['var_1'] ;
        echo 
'<table class=exercises><tr>
        <th class=params>Opérateur</th>
        <th class=comments>Nom</th>
        <th class=inputs>Valeur saisie <br />(gauche)</th>
        <th class=params>Opération</th>
        <th class=outputs>Résultat</th></tr>'
;
        foreach(
$operators as $keyLevel_1 => $dataLevel_1)
        {
            if (
$dataLevel_1[0] == $opType)
            {
                
$var_1  $_REQUEST['var_1'] ;
                echo 
"<td class=params>$dataLevel_1[1]</td>";
                echo 
"<td class=comments><small> 
                    
$keyLevel_1 </small></td>";
                echo 
"<td class=inputs>$var_1</td>";
                
$concat $dataLevel_1[3].'$var_1' ;
                
//on execute l'expression avec eval
                
eval("\$concat_   = $concat;" );  
                echo 
"<td class=params>$concat</td>";
                echo 
"<td class=outputs>$concat_</td>";
                echo 
"<tr>";
            }
        }
        echo 
"</table>";     
    }
            break;
//--------------------
case "Logiques" 
    
$title "<h3>Opérateurs logiques</h3>";
    
$var_1_message "Valeur de gauche (numérique)";
    
$var_2_message "Valeur de droite (numérique)";
    if (!isset(
$_REQUEST['var_1']))
    {
            
form_2($title,$var_1_message,$var_2_message);
    }
    else
    {    
        echo 
$title;
        
$var_1  $_REQUEST['var_1']." ";
        if (!isset(
$_REQUEST['var_2']))
        {
                
$var_2 "" ;
        }
        else
        {
                
$var_2 " ".$_REQUEST['var_2'];
        } 
    
show_result_1($var_1,$var_2,$operators,$opType);
    }
    break;
//--------------------
case "Tous" :
    echo 
"<big><b>Liste des opérateurs en PHP </b></big>";
    echo 
"<table class=exercises><tr>
    <th  class=params>Opérateur</th>
    <th  class=params>Type</th>
    <th  class=comments>Nom</th></tr>"
;
    foreach(
$operators as $keyLevel_1 => $dataLevel_1)
    {
        echo 
"<TR><td class=params>$dataLevel_1[1]</td>";
        echo 
"<td class=params>$dataLevel_1[0]</td>";
        echo 
"<td class=comments><small> $keyLevel_1 
            </small></td></tr>"
;    
    }
    echo 
"</table>";
    break ;    
}
//****************************FONCTIONS
function show_result_1($var_1,$var_2,$operators,$opType)
{
    echo 
'<table class=exercises><tr>
            <th class=params>Opérateur</th>
            <th class=comments>Nom</th>
            <th class=inputs>Valeur saisie <br />(gauche)</th>
            <th class=inputs>Valeur saisie <br />(droite)</th>
            <th class=params>Opération</th>
            <th class=outputs>Résultat</th></tr>'
;
    foreach(
$operators as $keyLevel_1 => $dataLevel_1)
    {
        if (
$dataLevel_1[0] == $opType)
        {
            echo 
"<td class=params>$dataLevel_1[1]</td>";
            echo 
"<td class=comments><small> $keyLevel_1 
                </small></td>"
;
            echo 
"<td class=inputs>$var_1</td>";
            echo 
"<td class=inputs>$var_2</td>";
            if (
$dataLevel_1[1] != "!")
            {
               
$concat "(".$var_1.$dataLevel_1[3].$var_2.")" ;
            }
            else
            {
                    
$var_2 trim($var_2);
                    
$concat "(".$dataLevel_1[3].$var_2.")" ;
            }                
            
//on execute l'expression avec eval
            
eval("\$concat_   = $concat;" );  
            echo 
"<td class=params>$concat</td>";
            echo 
"<td class=outputs>$concat_</td>"
            echo 
"<tr>";
        }
    }
    echo 
"</table>"
}
//----------------------------------
function form_2($title,$var_1_message,$var_2_message)
{
    echo 
$title;
    echo 
"<table class=exercises>
    <tr><td class=exercises>
$var_1_message</td>
            <td class=exercises> 
    <input type=text name=var_1></td></tr>
    <tr><td class=exercises>
$var_2_message</td>
            <td class=exercises> 
            <input type=text name=var_2></td></tr>
    <tr><td class=exercises colspan=2 align=right>
    <input type=submit 
            name=send_values value=Envoyer> 
    </td></tr></table>
    </form> "
;
}    
//--------------------------------------
function clear_not_numeric($value)
{
    if (!
is_numeric($value))
    {
        
$value ;
    }
    return 
$value;
}
//--------------------------------
function load_array($operators)
{
  global 
$operators;
//tableau des opérateurs
  
$operators = array 
    (
"Addition" => 
      array(
"Arithmétique","+" ,"valeur numérique","+"),
    
"Soustraction"  => 
      array(
"Arithmétique","-" ,"valeur numérique","-"),
    
"Multiplication"  => 
      array(
"Arithmétique","*" ,"valeur numérique","*"),
    
"Division"  => 
      array(
"Arithmétique","/" ,"valeur numérique","/"),
    
"Modulo"  => 
      array(
"Arithmétique","%" ,"valeur numérique","%"),
    
"Incrémentation"  => 
      array(
"Incrémentation","++","valeur numérique","++"),
    
"Décrémentation"  => 
      array(
"Incrémentation","--","valeur numérique","--"),
    
"Egal"  => 
      array(
"Comparaison","==" ,"valeur numérique","=="),
    
"Identique"  => 
      array(
"Comparaison","===" ,"valeur numérique","===" ),
    
"Non Egal"  => 
      array(
"Comparaison","<>" ,"valeur numérique","<ul>" ),
    
"Non Egal"  => 
      array(
"Comparaison","!=" ,"valeur numérique","!=" ),
    
"Non Identique"  => 
      array(
"Comparaison","!==" ,"valeur numérique","!=="),
    
"Plus petit"  => 
      array(
"Comparaison","&lt;" ,"valeur numérique","<"),
    
"Plus grand"  => 
      array(
"Comparaison","&gt;" ,"valeur numérique",">" ),
    
"Plus petit ou égal"  => 
      array(
"Comparaison","&lt;"."=" ,"valeur numérique","<="),
    
"Plus grand ou égal"  => 
      array(
"Comparaison","&gt;=" ,"valeur numérique",">="),
    
"Affectation simple"  => 
      array(
"Affectation","=" ,"valeur numérique","="),
    
"Addition puis affectation"  => 
      array(
"Affectation","+=" ,"valeur numérique","+="),
    
"Soustraction puis affectation"  => 
      array(
"Affectation","-=" ,"valeur numérique","-="),
    
"Multiplication puis affectation"  => 
      array(
"Affectation","*=" ,"valeur numérique","*="),
    
"Division puis affectation"  => 
      array(
"Affectation","/=" ,"valeur numérique","/="),
    
"Modulo puis affectation"  => 
      array(
"Affectation","%=" ,"valeur numérique","%="),
    
"OU puis affectation"  => 
      array(
"Affectation","|=" ,"valeur numérique","|="),
    
"ET puis affectation"  => 
      array(
"Affectation","&=" ,"valeur numérique","&="),
    
"ET"  => array("Binaires","&" ,"valeur numérique","&"),
    
"OU"  => array("Binaires","|" ,"valeur numérique","|"),
    
"OU exclusif"  => 
      array(
"Binaires","^" ,"valeur numérique","^"),
    
"NON"  => array("Binaires","~" ,"valeur numérique","-"),
    
"Décalage à droite"  => 
      array(
"Décalage",">>" ,"valeur binaire",">>"),
    
"Décalage à gauche"  => 
      array(
"Décalage","<<" ,"valeur binaire","<<"),
    
"ET (après le =)"  => 
      array(
"Logiques","AND" ,"valeur binaire","AND"),
    
"OU (après le =)"  => 
      array(
"Logiques","OR" ,"valeur binaire","OR"),
    
"XOR"  => array("Logiques","XOR" ,"valeur binaire","XOR"),
    
"NOT"  => array("Logiques","!" ,"valeur binaire","!"),
    
"ET (avant le =)"  => 
      array(
"Logiques","&&" ,"valeur binaire","&&"),
    
"OU (avant le =)"  => 
      array(
"Logiques","||" ,"valeur binaire","||"),
    
"Concaténation"  => 
      array(
"Concaténation","." ,"texte","."),
    
"Trinaire"  => array("Trinaire","?" ,"expression","?"),
            
"Clé de tableau"  => 
      array(
"Divers","="."&lt;" ,"valeur numérique","=>"),
    
"Appel de méthode"  => 
      array(
"Divers","->" ,"valeur numérique","->")
    );
}    
?>
<ul>
Tester les opérateurs :
<font size=-1>
<li><a class=exercices href=
<?php show_link("Affectation")?>
d'affectation</a></li>
<li><a class=exercices href=
<?php show_link("Arithmétique")?>
arithmetiques</a></li>
<li><a class=exercices href=
<?php show_link("Binaires")?>
binaires</a></li>
<li><a class=exercices href=
<?php show_link("Comparaison")?>
de comparaison </a></li>
<li><a class=exercices href=
<?php show_link("Décalage")?>
de décalage de bit</a></li>
<li><a class=exercices href=
<?php show_link("Incrémentation")?>
d'incrémentation/décrémentation</a></li>
<li><a class=exercices href=
<?php show_link("Logiques")?>
logiques</a></li></ul>
<a class=exercices href=
<?php show_link("Tous")?>
Liste de tous les opérateurs</a>
<?php
//----------------------------------
function show_link($opeName)
{
  global 
$curFile$actFile$exefile;
  if (
$curFile == "lesson_03_test.php")//loca:
  
{
    echo 
"lesson_03_test.php?opType=$opeName>";
  }
  else
  { 
    echo 
    
"$actFile?exercise=$exefile&opType=$opeName>";
  }
}
?>
</font>
</body>
</html>


Liste des opérateurs en PHP
Opérateur Type Nom
+Arithmétique Addition
-Arithmétique Soustraction
*Arithmétique Multiplication
/Arithmétique Division
%Arithmétique Modulo
++Incrémentation Incrémentation
--Incrémentation Décrémentation
==Comparaison Egal
===Comparaison Identique
!=Comparaison Non Egal
!==Comparaison Non Identique
<Comparaison Plus petit
>Comparaison Plus grand
<=Comparaison Plus petit ou égal
>=Comparaison Plus grand ou égal
=Affectation Affectation simple
+=Affectation Addition puis affectation
-=Affectation Soustraction puis affectation
*=Affectation Multiplication puis affectation
/=Affectation Division puis affectation
%=Affectation Modulo puis affectation
|=Affectation OU puis affectation
&=Affectation ET puis affectation
&Binaires ET
|Binaires OU
^Binaires OU exclusif
~Binaires NON
>>Décalage Décalage à droite
<<Décalage Décalage à gauche
ANDLogiques ET (après le =)
ORLogiques OU (après le =)
XORLogiques XOR
!Logiques NOT
&&Logiques ET (avant le =)
||Logiques OU (avant le =)
.Concaténation Concaténation
?Trinaire Trinaire
=<Divers Clé de tableau
->Divers Appel de méthode
Liste de tous les opérateurs

Tous droits réservés. 2005-2020