<?php
// Le code php doit être à l'intérieur d'une balise <?php ... ? >

/* Syntaxe de php
 * R209
 */


// variables : $id
$x = 0;
$b = true;
$chaine = "Bonjour";

// À noter : les instructions sont terminées par des ';'


// Types et opérateurs :
// deux types numériques : les entiers et les flottants
$x = $x + 2 * 3 / 7;

// booléens et opérateurs not, or et and : ! || &&
$b = ! (true || false) && $b;

// L'opérateur de concaténation de chaines est le '.'
$chaine = $chaine . " à tous";

// La fonction d'affichage se nomme echo
echo("<p>" . chaine . "</p>");

/*********************************
 *       Conditionnelles         *
 *********************************/

// Pas de 'then' mais des accolades.
// la condition entre parenthèses
if ($b) {
    $x = $x+1;
} else {
    $x = $x-1;
}

/***********************************
 *          Itérations             *
 ***********************************/
// Itérations non bornées
while ($b) {
    $b = false;
}

// Itérations bornées
for ($i = 0; $i < 17; $i = $i + 1) {
    // ^^^     ^^^     ^^^
    //  |       |       `- passage à l'itération suivante
    //  |       `--------- condition de sortie de boucle
    //  `----------------- initialisation
    echo($i);
}

/*****************************************
 *           Tableaux (arrays)           *
 *****************************************/
// initialisation
$t = array();
$u = array(7, 10, 33);

// cases numérotées à partir de 0
$t[0] = false;
$t[1] = true;
echo($t[0]);
echo(count($t)); //le nombre de cases de $t

// parcours d'un tableau avec for
for ($i=0; $i < count($t); $i = $i + 1) {
	echo("La case " . $i . " vaut " . $t[$i]);
}

/****************************************
 *              Fonctions               *
 ****************************************/
// Définition de fonction
function nomDeFonction(a, b) {
    //                 ^  ^
    //                 `--`-- paramètres formels
    $x = $a + $b;
    return $x;
}

// Appel de fonction
$z = nomDeFonction(7, 12);

/****************************************
 *       Tableaux associatifs           *
 *           (Hashtables)               *
 ****************************************/
// Déclaration
$d = array();
$dictionnaire = array(
    "alpha" => 1,
    "beta"  => 2,
    "omega" => 23,
);

// remplissage
$d["true"] = false;
$d["alpha"] = "omega";

// accès
$chose = $dictionnaire["alpha"];
$truc  = $dictionnaire["beta"];

//Savoir si une case est définie : isset
if (isset($dictionnaire["gamma"])) {
	// $dictionnaire possède bien un case gamma
	echo("$dictionnaire["gamma"]");
} else {
	// $dictionnaire n'a pas de case gamma. Créons en une
	$dictionnaire["gamma"] = 33;
}

// parcours avec foreach
foreach ($dictionnaire as $cle => $valeur) {
	//Comme pour le tableau (array),
	//$cle va parcourir les indices (clefs) du dictionnaire
	//$valeur va parallèlement parcourir les valeurs.
    echo("Dictionnaire " . $cle . " -> " . $valeur . " ou " . $dictionnaire[$cle]);
}
?>