PHP : les fondamentaux

Achref El Mouelhi

Docteur de l’universite´ d’Aix-Marseille Chercheur en programmation par contrainte (IA) Ingenieur´ en genie´ logiciel

[email protected]

H & H: Research and Training 1 / 218 Plan

1 Introduction

2 Avant de commencer

3 Premier projet PHP

4 Commentaires

5 Variables

6 Quelques operations´ sur les variables

7 Fonctions utiles pour les chaˆınes de caracteres`

H & H: Research and Training 2 / 218 Plan

8 Conditions et boucles if if ... else if ... elseif ... else switch Elvis operator Null coalescing while do ... while for 9 Tableaux Tableaux indexes´ Tableaux associatifs Tableaux multidimensionnels 10 Constantes

H & H: Research and Training 3 / 218 Plan

11 Fonctions Fonctions nommees´ Fonctions anonymes Valeurs par defaut´ pour les parametres` Fonctions a` nombre indetermin´ e´ de parametres` Decomposition´ Passage par ref´ erence´ Fonction de retour (callback) Fonctions flech´ ees´ (Arrow functions) Typage de parametres` Typage de valeurs de retour Typage strict Type Nullable Fonctions gen´ eratrices´

H & H: Research and Training 4 / 218 Plan

12 Variables locales et globales

13 Math

14 Date

15 Fichiers Ouverture Fermeture Utilisation

H & H: Research and Training 5 / 218 Introduction PHP

PHP Initialement pour Personal Home Page ensuite pour PHP : Hypertext Preprocessor) langage de programmation open-source oriente-objet´ et procedural´ imperatif´ interpret´ e´ faiblement type´ c Achref EL MOUELHI cre´e´ en 1994 par Rasmus Lerdorf dans le cadre d’un projet personnel pour gerer´ les visiteurs de son site web syntaxe tres` proche du C (procedural),´ C++ (procedural,´ oriente-objet)´ et Java (oriente-objet)´

H & H: Research and Training 6 / 218 Introduction PHP

PHP, pourquoi ?

Langage de haut niveau (pas de gestion de memoire,´ pas d’allocation dynamique, pas de pointeur... comme en c C et C++) Facile a` apprendre et a` utiliser Nombreuses documentations, supports videos,´ plusieurs exemples sur internet Enorme´ communautAchrefe´ : un EL des MOUELHI langages les plus utilises´ dans le monde c Permettant de developper´ rapidement des programmes portables : Windows, Mac OS, Linux...

H & H: Research and Training 7 / 218 Quelques technologies concurrentes a` PHP

JSP (Java Server Pages) : contenu dynamique ecrit´ en Java ASP.Net (Active Server Pages) : contenu dynamique pouvant etreˆ ecrit´ dans tous les langages de la plateforme .Net (C#, VB.Net...)

Introduction

Quel type d’application ? Applications utilisables en ligne de commande (scripting) La partie serveur pour applications web c applications mobiles sites web dynamiques

Services web c Achref EL MOUELHI

H & H: Research and Training 8 / 218 Introduction

Quel type d’application ? Applications utilisables en ligne de commande (scripting) La partie serveur pour applications web c applications mobiles sites web dynamiques

Services web Achref EL MOUELHI Quelques technologies c concurrentes a` PHP JSP (Java Server Pages) : contenu dynamique ecrit´ en Java ASP.Net (Active Server Pages) : contenu dynamique pouvant etreˆ ecrit´ dans tous les langages de la plateforme .Net (C#, VB.Net...)

H & H: Research and Training 8 / 218 Introduction

Dates de sorties de quelques versions de PHP

8 juin 1995 : Version 1.0. 1er novembre 1997 : Version 2.0. 6 juin 1998 : Version 3.0. 22 mai 2000 : Version 4.0. 10 decembre´ 2001 : Version 4.1. c 13 juillet 2004 : Version 5.0. 24 novembre 2005 : Version 5.1. 2 novembre 2006 : Version 5.2. 30 juin 2009 : Version 5.3. 1er mars 2012 : Version 5.4. 20 juin 2013 : VersionAchref 5.5. EL MOUELHI 28 aoutˆ 2014 c : Version 5.6. 3 decembre´ 2015 : Version 7.0. 1 decembre´ 2016 : Version 7.1. 30 novembre 2017 : Version 7.2. 6 decembre´ 2018 : Version 7.3. 21 novembre 2019 : Version 7.4.

H & H: Research and Training 9 / 218 Introduction PHP

Requˆete Serveur HTTP Web HTTP c (index.php)

index.php

AchrefHTML EL MOUELHI c Interpr´eteur CSS + JS R´eponse PHP Base de HTTP donn´ees

Client Serveur

H & H: Research and Training 10 / 218 Sous Windows, on peut les trouver dans WAMP http://www.wampserver.com/

Introduction PHP

De quoi on a besoin (le minimum) ?

Un editeur´ de texte (Bloc-notes, Notepad++, Sublime Text...) Un serveur web (Apache) c Un interpreteur´ du langage PHP Et probablement un systeme` de gestion de base de donnees´ (gen´ eralement´ MySQL) c Achref EL MOUELHI

H & H: Research and Training 11 / 218 Introduction PHP

De quoi on a besoin (le minimum) ?

Un editeur´ de texte (Bloc-notes, Notepad++, Sublime Text...) Un serveur web (Apache) c Un interpreteur´ du langage PHP Et probablement un systeme` de gestion de base de donnees´ (gen´ eralement´ MySQL) c Achref EL MOUELHI Sous Windows, on peut les trouver dans WAMP http://www.wampserver.com/

H & H: Research and Training 11 / 218 Quelques el´ ements´ dans le menu de demarrage´ de WAMP

localhost : page de demarrage´ de WAMP

phpMyAdmin : page web permettant la gestion des bases de donnees´ MySQL

Repertoire´ www : emplacement des projets PHP sur le disque dur

...

Introduction PHP Premiere` utilisation de WAMP

Demarrer´ WAMP

Cliquer sur WAMP dans la barre de demarrage´ et choisir Redemarrer´ les services c Si l’iconeˆ de WAMP n’est pas en vert, aller verifier´ http://forum.wampserver.com/read.php?1,88043

c Achref EL MOUELHI

H & H: Research and Training 12 / 218 Introduction PHP Premiere` utilisation de WAMP

Demarrer´ WAMP

Cliquer sur WAMP dans la barre de demarrage´ et choisir Redemarrer´ les services c Si l’iconeˆ de WAMP n’est pas en vert, aller verifier´ http://forum.wampserver.com/read.php?1,88043

Quelques el´ ements´ Achref dans le menu de EL demarrage´ MOUELHI de WAMP localhost c : page de demarrage´ de WAMP

phpMyAdmin : page web permettant la gestion des bases de donnees´ MySQL

Repertoire´ www : emplacement des projets PHP sur le disque dur

...

H & H: Research and Training 12 / 218 Introduction PHP

On peut utiliser un IDE (Environnement de developpement´ integr´ e)´ pour eviter´ d’utiliser la console et les commandes c car un IDE integre` un compilateur lance´ memeˆ pendant l’ecriture´ du code pour profiter de la coloration syntaxique, l’auto-completion,´ l’indentation c Achref automatique... EL MOUELHI pour avoir une bonne structuration du projet

H & H: Research and Training 13 / 218 Introduction PHP

Exemple d’IDE pour PHP Eclipse c Netbeans WebStorm PHPStorm c Achref EL MOUELHI ...

H & H: Research and Training 14 / 218 Introduction PHP

Eclipse, pourquoi ? c open-source simple conseille´ pour les debutants´ Achref EL MOUELHI multi-langage c : Java, C++, PHP, Cobol, C#, JavaScript...

H & H: Research and Training 15 / 218 Introduction Introduction

c Eclipse : tel´ echargement´ https://www.eclipse.org/downloads/download.php?file =/oomph/epp/2019-12/R/eclipse-inst-win64.exe c Achref EL MOUELHI

H & H: Research and Training 16 / 218 Introduction PHP

c

c Achref EL MOUELHI

H & H: Research and Training 17 / 218 Introduction PHP

c

c Achref EL MOUELHI

H & H: Research and Training 17 / 218 Introduction PHP

Configuration d’Eclipse Au demarrage´ d’Eclipse, choisir le repertoire´ www de wamp64c comme workspace Aller Window > Preferences, saisir encoding Verifier´ dans toutes les sections que l’encodage utilise´ est l’UTF-8 c Achref EL MOUELHI Valider en cliquant sur Apply and close

H & H: Research and Training 18 / 218 Remarque

Certains anciens el´ ements´ PHP pred´ efinis´ ne respectent pas ces regles.`

Avant de commencer PHP

Les regles` de nommage en PHP Pour les classes : Le Pascal case c Pour les methodes,´ fonctions et variables : Le snake case Pour les noms de projets : Le Kebab case

c Achref EL MOUELHI

H & H: Research and Training 19 / 218 Avant de commencer PHP

Les regles` de nommage en PHP Pour les classes : Le Pascal case c Pour les methodes,´ fonctions et variables : Le snake case Pour les noms de projets : Le Kebab case

Achref EL MOUELHI Remarque c

Certains anciens el´ ements´ PHP pred´ efinis´ ne respectent pas ces regles.`

H & H: Research and Training 19 / 218 Avant de commencer PHP

Le code PHP Les fichiers contenant un code PHP doivent avoir l’extension c .php

Un bloc de code PHP est situe´ entre les deux balises suivantes Une page c PHPAchref est une page EL HTML MOUELHI qui contient une ou plusieurs balises PHP

H & H: Research and Training 20 / 218 Avant de commencer PHP

Les instructions c Chaque instruction se termine par ; Il est possible d’ecrire´ plusieurs instructions sur une memeˆ ligne (mais ce n’est pas une bonne pratique) Eclipse nousAchref facilite le formatage EL MOUELHI et l’indentation du code avec le raccourci c CTRL + Shift + F

H & H: Research and Training 21 / 218 Remarque

Aller verifier´ dans le repertoire´ www qu’un repertoire´ premier-cours-php a et´ e´ cre´e´

Premier projet PHP PHP

Comment creer´ un projet sous Eclipse ? Aller dans File > New > PHP Project Remplir le champ Project name: avec premier-cours-php c puis cliquer sur Next Cliquer sur Finish

c Achref EL MOUELHI

H & H: Research and Training 22 / 218 Premier projet PHP PHP

Comment creer´ un projet sous Eclipse ? Aller dans File > New > PHP Project Remplir le champ Project name: avec premier-cours-php c puis cliquer sur Next Cliquer sur Finish

c Achref EL MOUELHI Remarque

Aller verifier´ dans le repertoire´ www qu’un repertoire´ premier-cours-php a et´ e´ cre´e´

H & H: Research and Training 22 / 218 Premier projet PHP PHP

Comment creer´ un fichier PHP ? c Faire clic droit sur le projet et aller dans New > PHP File Dans File name, saisir index.php et cliquer sur Next > Choisir New simple PHP file Achref EL MOUELHI Cliquer c sur Finish

H & H: Research and Training 23 / 218 Premier projet PHP PHP

Remplacer le contenu d’index.php par le suivant c Premiere` page PHP

H & H: Research and Training 24 / 218 Premier projet PHP PHP

c Comment voir le resultat´ de cette page ?

Faire clic droit sur le fichier index.php Choisir Run > PHP Web Application c Achref EL MOUELHI

H & H: Research and Training 25 / 218 Premier projet PHP PHP

Fonctions d’affichage : echo et print

utilisables avec et sans parentheses.` echo n’a pas de valeur de retour. c echo sans parenthese` peut accepter plusieurs parametres` separ´ es´ par des virgules. print retourne toujours 1, donc elle peut etreˆ utilisee´ dans des expressions. c Achref EL MOUELHI print n’accepte qu’un seul parametre.` echo est leg´ erement` plus rapide que print.

H & H: Research and Training 26 / 218 Commentaire mono-ligne (C++-style, deconseill´ e)´ // ceci est un commentaire sur une seule ligne

Commentaire sur plusieurs lignes (C-style comment) /* ceci est un commentaire sur trois lignes */

Commentaire pour documentation /** @author Achref El Mouelhi */

Commentaires PHP

Les commentaires

Trois types de commentaires c

c Achref EL MOUELHI

H & H: Research and Training 27 / 218 Commentaire sur plusieurs lignes (C-style comment) /* ceci est un commentaire sur trois lignes */

Commentaire pour documentation /** @author Achref El Mouelhi */

Commentaires PHP

Les commentaires

Trois types de commentaires

Commentaire mono-ligne (C++-style, deconseill´ e)´ c // ceci est un commentaire sur une seule ligne

c Achref EL MOUELHI

H & H: Research and Training 27 / 218 Commentaire pour documentation /** @author Achref El Mouelhi */

Commentaires PHP

Les commentaires

Trois types de commentaires

Commentaire mono-ligne (C++-style, deconseill´ e)´ c // ceci est un commentaire sur une seule ligne

Commentaire sur plusieurs lignes (C-style comment) /* ceci est un commentaire Achref EL MOUELHI sur trois clignes */

H & H: Research and Training 27 / 218 Commentaires PHP

Les commentaires

Trois types de commentaires

Commentaire mono-ligne (C++-style, deconseill´ e)´ c // ceci est un commentaire sur une seule ligne

Commentaire sur plusieurs lignes (C-style comment) /* ceci est un commentaire Achref EL MOUELHI sur trois clignes */

Commentaire pour documentation /** @author Achref El Mouelhi */

H & H: Research and Training 27 / 218 Particularite´ du langage PHP

PHP est un langage faiblement type.´

Les variables sont prefix´ ees´ par un signe dollar ”$” suivi du nom de la variable dont le premier caractere` est soit une lettre soit un underscore.

Le nom est sensible a` la casse.

Variables PHP

Une variable ?

Un pointeur vers une zone memoire´ Permettant de stocker une ou plusieurs donnees´ c Pouvant avoir plusieurs valeurs differentes´ dans un programme

c Achref EL MOUELHI

H & H: Research and Training 28 / 218 Variables PHP

Une variable ?

Un pointeur vers une zone memoire´ Permettant de stocker une ou plusieurs donnees´ c Pouvant avoir plusieurs valeurs differentes´ dans un programme

Particularite´ du langage PHP Achref EL MOUELHI PHP est c un langage faiblement type.´

Les variables sont prefix´ ees´ par un signe dollar ”$” suivi du nom de la variable dont le premier caractere` est soit une lettre soit un underscore.

Le nom est sensible a` la casse.

H & H: Research and Training 28 / 218 Exemple 2 $_x = 5;

Exemple 3 $ma_variable = 5;

Exemple 4 $_ma_variable = 5;

Variables PHP Exemple 1 $x = 5;

c

c Achref EL MOUELHI

H & H: Research and Training 29 / 218 Exemple 3 $ma_variable = 5;

Exemple 4 $_ma_variable = 5;

Variables PHP Exemple 1 $x = 5;

Exemple 2 c $_x = 5;

c Achref EL MOUELHI

H & H: Research and Training 29 / 218 Exemple 4 $_ma_variable = 5;

Variables PHP Exemple 1 $x = 5;

Exemple 2 c $_x = 5;

Exemple 3 Achref EL MOUELHI $ma_variable c = 5;

H & H: Research and Training 29 / 218 Variables PHP Exemple 1 $x = 5;

Exemple 2 c $_x = 5;

Exemple 3 Achref EL MOUELHI $ma_variable c = 5;

Exemple 4 $_ma_variable = 5;

H & H: Research and Training 29 / 218 Variables PHP

Quatre types primitifs (scalaires) de variable selon la valeur c affectee´ int string boolean Achref EL MOUELHI float c(ou double)

H & H: Research and Training 30 / 218 Exemple avec double $var = 5.5; echo "$var ", gettype($var), "
"; /* affiche 5.5 double */

Exemple avec boolean $var = TRUE; echo "$var ", gettype($var), "
"; /* affiche1 boolean */

Variables PHP Exemple avec integer $var = 5; echo "$var ", gettype($var), "
"; /* affiche5 integer */ c

c Achref EL MOUELHI

H & H: Research and Training 31 / 218 Exemple avec boolean $var = TRUE; echo "$var ", gettype($var), "
"; /* affiche1 boolean */

Variables PHP Exemple avec integer $var = 5; echo "$var ", gettype($var), "
"; /* affiche5 integer */ c Exemple avec double $var = 5.5; echo "$var ", gettype($var), "
"; /* affiche 5.5 double */ c Achref EL MOUELHI

H & H: Research and Training 31 / 218 Variables PHP Exemple avec integer $var = 5; echo "$var ", gettype($var), "
"; /* affiche5 integer */ c Exemple avec double $var = 5.5; echo "$var ", gettype($var), "
"; /* affiche 5.5 double */ c Achref EL MOUELHI

Exemple avec boolean $var = TRUE; echo "$var ", gettype($var), "
"; /* affiche1 boolean */

H & H: Research and Training 31 / 218 Un seul caractere` est aussi de type string $var = "h"; echo "$var ", gettype($var), "
"; /* afficheh string */

Pour afficher plusieurs informations sur une variable, on utilise var dump() $var = "hello"; echo var_dump($var) ,"
"; /* afficheC:\wamp64\www\premier-cours-php\index.php:17:string ’hello’(length=5) */

Variables PHP Exemple avec string $var = "hello"; echo "$var ", gettype($var), "
"; /* affiche hello string */ c

c Achref EL MOUELHI

H & H: Research and Training 32 / 218 Pour afficher plusieurs informations sur une variable, on utilise var dump() $var = "hello"; echo var_dump($var) ,"
"; /* afficheC:\wamp64\www\premier-cours-php\index.php:17:string ’hello’(length=5) */

Variables PHP Exemple avec string $var = "hello"; echo "$var ", gettype($var), "
"; /* affiche hello string */ c Un seul caractere` est aussi de type string $var = "h"; echo "$var ", gettype($var), "
"; /* afficheh string */ c Achref EL MOUELHI

H & H: Research and Training 32 / 218 Variables PHP Exemple avec string $var = "hello"; echo "$var ", gettype($var), "
"; /* affiche hello string */ c Un seul caractere` est aussi de type string $var = "h"; echo "$var ", gettype($var), "
"; /* afficheh string */ c Achref EL MOUELHI Pour afficher plusieurs informations sur une variable, on utilise var dump() $var = "hello"; echo var_dump($var) ,"
"; /* afficheC:\wamp64\www\premier-cours-php\index.php:17:string ’hello’(length=5) */

H & H: Research and Training 32 / 218 Exemple avec is string() $var = "hello"; echo is_string($var) ,"
"; /* affiche1 */

echo is_bool($var) ,"
"; /* n’affiche rien */

Variables PHP

Remarques

Pour verifier´ un type, on peut utiliser la fonction is type($nom variable) : type a` remplacer par le type que l’on cherche a` verifier´ Pour les booleens,´ il faut utiliser is bool($nom variable). c Ces fonctions retournent 1 si le type de la valeur de la variable passee´ en parametre` est verifi´ e,´ elles ne retournent rien sinon.

c Achref EL MOUELHI

H & H: Research and Training 33 / 218 Variables PHP

Remarques

Pour verifier´ un type, on peut utiliser la fonction is type($nom variable) : type a` remplacer par le type que l’on cherche a` verifier´ Pour les booleens,´ il faut utiliser is bool($nom variable). c Ces fonctions retournent 1 si le type de la valeur de la variable passee´ en parametre` est verifi´ e,´ elles ne retournent rien sinon.

Exemple aveccis string()Achref EL MOUELHI $var = "hello"; echo is_string($var) ,"
"; /* affiche1 */

echo is_bool($var) ,"
"; /* n’affiche rien */

H & H: Research and Training 33 / 218 Variables PHP

Explication c PHP convertit une valeur booleenne´ TRUE en la chaˆıne ”1” et FALSE en ”” (la chaˆıne vide), par consequence´ echo true affiche 1 echo falsec Achrefn’affiche rien EL MOUELHI

H & H: Research and Training 34 / 218 Variables PHP

La fonction is numeric permet de verifier´ si le contenu d’une variable est numerique´

echo(is_numeric(2)); /* affiche1 */

echo(is_numeric(2.5)); /* affiche1 */ c echo(is_numeric("2")); /* affiche1 */

echo(is_numeric("-2.5")); /* affiche1 */ echo(is_numeric(trueAchref)); EL MOUELHI /* n’affiche c rien */

echo(is_numeric("2a")); /* n’affiche rien */

echo(is_numeric("a")); /* n’affiche rien */

H & H: Research and Training 35 / 218 Variables PHP

Autres fonctions is * is float() c is real() (ou son alias is float()) is object() is array()Achref EL MOUELHI is scalar() c pour tester si une variable est de type entier, nombre decimal,´ chaˆıne de caracteres` ou booleen.´

H & H: Research and Training 36 / 218 Variables PHP

Utiliser une variable non-declar´ ee´ et non-initialisee´ ⇒ cUndefined variable $x = $y + 1;

echo $x; c Achref EL MOUELHI

H & H: Research and Training 37 / 218 Variables PHP

La constante NULL peut-etreˆ utilisee´ pour creer´ une variable sans l’initialiser. Cette derniere` sera de type null c $var = NULL;

echo $var; /* n’affiche rien */ Achref EL MOUELHI echo gettype c ($var); /* affiche NULL */

H & H: Research and Training 38 / 218 empty() vs isset() vs is null()

"" "wick" NULL false true 0 empty() true false true true false true isset() true true false true true true is null() false false true false false false

Variables PHP

La fonction isset peut-etreˆ utilisee´ pour verifier´ si une variable est declar´ ee´ et est differente´ de NULL $var = NULL; echo isset($var); c /* n’affiche rien */

$var = 2; echo isset($var); /* affiche1 */ c Achref EL MOUELHI

H & H: Research and Training 39 / 218 Variables PHP

La fonction isset peut-etreˆ utilisee´ pour verifier´ si une variable est declar´ ee´ et est differente´ de NULL $var = NULL; echo isset($var); c /* n’affiche rien */

$var = 2; echo isset($var); /* affiche1 */ Achref EL MOUELHI empty() vs isset()c vs is null() "" "wick" NULL false true 0 empty() true false true true false true isset() true true false true true true is null() false false true false false false

H & H: Research and Training 39 / 218 Variables PHP

La fonction unset peut-etreˆ utilisee´ pour detruire´ la variable passee´ en parametre` c $var = 2; echo isset($var); /* affiche1 */

unset($var); echo isset c($var);Achref EL MOUELHI /* n’affiche rien */

H & H: Research and Training 40 / 218 Variables PHP

Difference´ entre ”guillemets” et ’apostrophes’ avec echo $var = 2; c echo "Contenu de ma variable : $var" /* affiche Contenu de ma variable:2 */

echo ’Contenu de ma variable : $var’ /* affiche c ContenuAchref de ELma variable MOUELHI: $var */

H & H: Research and Training 41 / 218 Quelques operations´ sur les variables PHP

Operateurs´ arithmetiques´ = : affectation c + : addition - : soustraction

* : multiplication Achref EL MOUELHI / : division c % : reste de la division

** : exponentiel

H & H: Research and Training 42 / 218 Quelques operations´ sur les variables PHP

Quelques exemples avec l’addition $x = 1; $y = 3; c $z = ’8’; $t = "2"; $n = 2.5; echo($x + $y ."
");/ * 4 */ echo($x + $zAchref ."
"); EL/ * MOUELHI9 */ echo($x +c $t ."
");/ * 3 */ echo($x + $y + $z ."
");/ * 12 */ echo($z + $y + $x ."
");/ * 12 */ echo($x + $n ."
");/ * 3.5 */

H & H: Research and Training 43 / 218 Quelques operations´ sur les variables PHP

Quelques raccourcis $i++; ≡ $i = $i + 1; c $i--; ≡ $i = $i - 1; $i += 2; ≡ $i = $i + 2; $i -= 3; ≡ $i = $i - 3; $i *= c 2; Achref≡ $i = $i EL* 2; MOUELHI $i /= 3; ≡ $i = $i / 3; $i %= 5; ≡ $i = $i % 5;

H & H: Research and Training 44 / 218 Exemple de pre-incrementation´ $i = 2; $j = ++$i; echo($i);/ * affiche3 */ echo($j);/ * affiche3 */

Quelques operations´ sur les variables PHP

Exemple de post-incrementation´ $i = 2; $j = $i++; echo($i);/ * affiche3 */ c echo($j);/ * affiche2 */

c Achref EL MOUELHI

H & H: Research and Training 45 / 218 Quelques operations´ sur les variables PHP

Exemple de post-incrementation´ $i = 2; $j = $i++; echo($i);/ * affiche3 */ c echo($j);/ * affiche2 */

Exemple de pre-incrAchrefementation´ EL MOUELHI $i = 2; c $j = ++$i; echo($i);/ * affiche3 */ echo($j);/ * affiche3 */

H & H: Research and Training 45 / 218 Quelques operations´ sur les variables PHP

Pour permuter le contenu de deux variables, on peut utiliser la decomposition´ c $a = 2; $b = 0; [$a, $b] = [$b, $a]; echo $a . " " . $b; /* affiche02 */ c Achref EL MOUELHI

H & H: Research and Training 46 / 218 Quelques operations´ sur les variables PHP

Pour permuter le contenu de deux variables, on peut utiliser la decomposition´ c $a = 2; $b = 0; [$a, $b] = [$b, $a]; echo $a . " " . $b; /* affiche02 */ c Achref EL MOUELHI

H & H: Research and Training 46 / 218 Exercice

Ecrire´ un script PHP qui permet d’ajouter le nombre de secondes defini´ dans $seconds a` l’heure definie´ dans la chaˆıne de caractere` $heure.

Quelques operations´ sur les variables PHP

Etant´ donnees´ les deux variables suivantes $heure = ’03:40:52’; $seconds = 200; c

c Achref EL MOUELHI

H & H: Research and Training 47 / 218 Quelques operations´ sur les variables PHP

Etant´ donnees´ les deux variables suivantes $heure = ’03:40:52’; $seconds = 200; c

Exercice Achref EL MOUELHI Ecrire´ un script c PHP qui permet d’ajouter le nombre de secondes defini´ dans $seconds a` l’heure definie´ dans la chaˆıne de caractere` $heure.

H & H: Research and Training 47 / 218 Quelques operations´ sur les variables PHP

Correction

H & H: Research and Training 48 / 218 L’operateur´ .= permet de faire concatenation´ + affectation $string = "bon"; $string2 = "jour"; $string .= $string2; echo $string; /* affiche bonjour */

Fonctions utiles pour les chaˆınes de caracteres` PHP L’operateur´ . pour concatener´ deux chaˆınesde caracteres` $string = "bon"; $string2 = "jour"; $str_concat = $string . $string2; echo $str_concat; c /* affiche bonjour */

c Achref EL MOUELHI

H & H: Research and Training 49 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP L’operateur´ . pour concatener´ deux chaˆınesde caracteres` $string = "bon"; $string2 = "jour"; $str_concat = $string . $string2; echo $str_concat; c /* affiche bonjour */

L’operateur´ .= Achrefpermet de ELfaire concat MOUELHIenation´ + affectation $string =c "bon"; $string2 = "jour"; $string .= $string2; echo $string; /* affiche bonjour */

H & H: Research and Training 49 / 218 Pour comparer deux chaˆınesde caracteres,` on peut aussi utiliser l’operateur´ == echo $string == $string; /* affiche1 */

echo $string == $string2; /* n’affiche rien */

Fonctions utiles pour les chaˆınes de caracteres` PHP

La fonction strcmp() pour comparer deux chaˆınesde caracteres` $string = "bon"; $string2 = "jour";

echo strcmp($string, $string2); /* affiche -1 */ c echo strcmp($string2, $string); /* affiche1 */

echo strcmp($string, $string); /* affiche0 */ c Achref EL MOUELHI

H & H: Research and Training 50 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

La fonction strcmp() pour comparer deux chaˆınesde caracteres` $string = "bon"; $string2 = "jour";

echo strcmp($string, $string2); /* affiche -1 */ c echo strcmp($string2, $string); /* affiche1 */

echo strcmp($string, $string); /* affiche0 */ c Achref EL MOUELHI Pour comparer deux chaˆınesde caracteres,` on peut aussi utiliser l’operateur´ == echo $string == $string; /* affiche1 */

echo $string == $string2; /* n’affiche rien */

H & H: Research and Training 50 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Fonctions utiles pour les chaˆınes de caracteres`

strlen() : la longueur de la chaˆıne

strtoupper() : pour convertir une chaˆıne de caracteres` en majuscule strtolower() : pour convertir une chaˆıne de caracteres` en minuscule c trim() : pour supprimer les espaces au debut´ et a` la fin (autres variantes : ltrim() et rtrim())

substr() : pour extraire une sous-chaˆıne de caracteres`

strpos() : pour retourner la position d’une sous-chaˆıne dans une chaˆıne, -1 sinon.

strcmp($str,$str2)Achref: pour comparer EL MOUELHIstr a` str2. Elle retourne 0 en cas d’egalit´ e,´ 1 si le code c ASCII du premier caractere` different´ de la premiere` chaˆıne est superieur´ a` celui de la deuxieme` chaˆıne, -1 sinon.

str split() : pour transformer une chaˆıne de caracteres` en tableau de sous-chaˆınes de caracteres`

...

H & H: Research and Training 51 / 218 Pour supprimer les espaces au debut´ et a` la fin de la chaˆıne $str = " bon jour "; echo(strlen($str)); /* affiche 12 */

$sans_espace = trim($str); echo(strlen($sans_espace)); /* affiche8 */

Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour connaˆıtrela longueur d’une chaˆıne $str = "bonjour"; echo(strlen($str)); /* affiche7 */ c

c Achref EL MOUELHI

H & H: Research and Training 52 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour connaˆıtrela longueur d’une chaˆıne $str = "bonjour"; echo(strlen($str)); /* affiche7 */ c

Pour supprimer les espaces au debut´ et a` la fin de la chaˆıne $str = " bon jour "; echo(strlen($str));Achref EL MOUELHI /* affiche c 12 */

$sans_espace = trim($str); echo(strlen($sans_espace)); /* affiche8 */

H & H: Research and Training 52 / 218 On peut aussi preciser´ le nombre de caractere` a` extraire

$str = "bonjour"; echo(substr($str, 3, 2)); /* affiche jo */

Pour extraire les trois derniers caracteres,` on utilise une valeur negative´

$str = "bonjour"; echo(substr($str, -3));/ * eq substr($str, 4) avec4= length-3 */ /* affiche our */

Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour extraire une sous-chaˆıne a` partir de l’indice 3 jusqu’a` la fin

$str = "bonjour"; echo(substr($str, 3)); /* affiche jour */ c

c Achref EL MOUELHI

H & H: Research and Training 53 / 218 Pour extraire les trois derniers caracteres,` on utilise une valeur negative´

$str = "bonjour"; echo(substr($str, -3));/ * eq substr($str, 4) avec4= length-3 */ /* affiche our */

Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour extraire une sous-chaˆıne a` partir de l’indice 3 jusqu’a` la fin

$str = "bonjour"; echo(substr($str, 3)); /* affiche jour */ c

On peut aussi preciser´ le nombre de caractere` a` extraire

$str = "bonjour"; echo(substr($str, 3, 2)); /* affiche jo */ c Achref EL MOUELHI

H & H: Research and Training 53 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour extraire une sous-chaˆıne a` partir de l’indice 3 jusqu’a` la fin

$str = "bonjour"; echo(substr($str, 3)); /* affiche jour */ c

On peut aussi preciser´ le nombre de caractere` a` extraire

$str = "bonjour"; echo(substr($str, 3, 2)); /* affiche jo */ c Achref EL MOUELHI Pour extraire les trois derniers caracteres,` on utilise une valeur negative´

$str = "bonjour"; echo(substr($str, -3));/ * eq substr($str, 4) avec4= length-3 */ /* affiche our */

H & H: Research and Training 53 / 218 Pour une recherche insensible a` la casse $str = "Bonjour les bons jours"; echo(stripos($str, "bon")); /* affiche0 */

S’il n’y a aucune occurrence, elle ne retourne rien $str = "Bonjour les bons jours"; echo(strpos($str, "soir")); /* n’affiche rien */

Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour determiner´ l’indice d’une sous-chaˆınedans une chaˆınede caracteres` $str = "Bonjour les bons jours"; echo(strpos($str, "bon")); /* affiche 12 */ c

c Achref EL MOUELHI

H & H: Research and Training 54 / 218 S’il n’y a aucune occurrence, elle ne retourne rien $str = "Bonjour les bons jours"; echo(strpos($str, "soir")); /* n’affiche rien */

Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour determiner´ l’indice d’une sous-chaˆınedans une chaˆınede caracteres` $str = "Bonjour les bons jours"; echo(strpos($str, "bon")); /* affiche 12 */ c

Pour une recherche insensible a` la casse $str = "Bonjour les bons jours"; echo(stripos($str, "bon")); /* affiche0 */ c Achref EL MOUELHI

H & H: Research and Training 54 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour determiner´ l’indice d’une sous-chaˆınedans une chaˆınede caracteres` $str = "Bonjour les bons jours"; echo(strpos($str, "bon")); /* affiche 12 */ c

Pour une recherche insensible a` la casse $str = "Bonjour les bons jours"; echo(stripos($str, "bon")); /* affiche0 */ c Achref EL MOUELHI

S’il n’y a aucune occurrence, elle ne retourne rien $str = "Bonjour les bons jours"; echo(strpos($str, "soir")); /* n’affiche rien */

H & H: Research and Training 54 / 218 Pour determiner´ la derniere` occurrence d’une sous-chaˆınedans une chaˆınede caracteres` (insensible a` la casse) $str = "Bonjour les bons jours"; echo(strripos($str, "bon")); /* affiche 12 */

Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour determiner´ la derniere` occurrence d’une sous-chaˆınedans une chaˆınede caracteres` $str = "Bonjour les bons jours"; echo(strrpos($str, "jour")); c /* affiche 17 */

c Achref EL MOUELHI

H & H: Research and Training 55 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour determiner´ la derniere` occurrence d’une sous-chaˆınedans une chaˆınede caracteres` $str = "Bonjour les bons jours"; echo(strrpos($str, "jour")); c /* affiche 17 */

Pour determiner´ Achref la derniere` EL occurrence MOUELHI d’une sous-chaˆınedans une chaˆınede c caracteres` (insensible a` la casse) $str = "Bonjour les bons jours"; echo(strripos($str, "bon")); /* affiche 12 */

H & H: Research and Training 55 / 218 Ou /* soit en faisantl’extractiond’une sous chaine de caracte`res */ echo(substr($str, i, 1));

Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour acceder´ a` un caractere` d’indice i dans une chaˆınede caracteres` // soit directement vial’indice c echo($str[i]);

c Achref EL MOUELHI

H & H: Research and Training 56 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour acceder´ a` un caractere` d’indice i dans une chaˆınede caracteres` // soit directement vial’indice c echo($str[i]);

Ou Achref EL MOUELHI /* soit enc faisantl’extractiond’une sous chaine de caracte`res */ echo(substr($str, i, 1));

H & H: Research and Training 56 / 218 Exercice En utilisant les fonctions sur les chaˆınes de caracteres,` ecrire´ un script PHP qui permet de retourner la position de l’avant derniere` occurrence de $motif dans $ma chaine.

Fonctions utiles pour les chaˆınes de caracteres` PHP

Etant´ donnees´ les deux chaˆınesde caracteres` suivantes $ma_chaine = "Hello les holoulos"; $motif = "lo"; c

c Achref EL MOUELHI

H & H: Research and Training 57 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Etant´ donnees´ les deux chaˆınesde caracteres` suivantes $ma_chaine = "Hello les holoulos"; $motif = "lo"; c

Exercice Achref EL MOUELHI En utilisant lesc fonctions sur les chaˆınes de caracteres,` ecrire´ un script PHP qui permet de retourner la position de l’avant derniere` occurrence de $motif dans $ma chaine.

H & H: Research and Training 57 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Correction "; echo cstrrpos ($sans_dernier_motif, $motif); ?>

H & H: Research and Training 58 / 218 Exercice En utilisant les fonctions sur les chaˆınes de caracteres,` ecrire´ un script PHP qui permet de supprimer l’avant derniere` occurrence de $motif dans $ma chaine.

Fonctions utiles pour les chaˆınes de caracteres` PHP

Etant´ donnees´ les deux chaˆınesde caracteres` suivantes $ma_chaine = "Hello les holoulos"; $motif = "lo"; c

c Achref EL MOUELHI

H & H: Research and Training 59 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Etant´ donnees´ les deux chaˆınesde caracteres` suivantes $ma_chaine = "Hello les holoulos"; $motif = "lo"; c

Exercice Achref EL MOUELHI En utilisant lesc fonctions sur les chaˆınes de caracteres,` ecrire´ un script PHP qui permet de supprimer l’avant derniere` occurrence de $motif dans $ma chaine.

H & H: Research and Training 59 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Correction

$pos_avant_dernier = strrpos($sans_dernier_motif, $motif); $avant = substr($ma_chaine, 0, $pos_avant_dernier); $apres = substr($ma_chaine, $pos_avant_dernier + strlen($motif)); $ma_chaine = $avantAchref . $apres; EL MOUELHI echo $ma_chaine; c ?>

H & H: Research and Training 60 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

La fonction nl2br permet de remplacer \n et \r par la balise
$bonjour = "bonjour \n john \n wick \n\r ou \r\n Keanu Reeves" ; c echo nl2br($bonjour);

/* le code sourceg e´ne´re´ bonjour
Achref EL MOUELHI john
wick
ou
Keanu Reeves */

H & H: Research and Training 61 / 218 Une deuxieme` solution avec la fonction intval() $a = ’4’; $b = intval($a); echo $b . " " . gettype($b); /* affiche4 integer */

Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour convertir une chaˆıneen entier (premiere` solution avec le cast) $a = ’4’; $b = (int)$a; c echo $b . " " . gettype($b); /* affiche4 integer */

c Achref EL MOUELHI

H & H: Research and Training 62 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

Pour convertir une chaˆıneen entier (premiere` solution avec le cast) $a = ’4’; $b = (int)$a; c echo $b . " " . gettype($b); /* affiche4 integer */

Une deuxi eme`c solutionAchref avec EL la fonction MOUELHIintval() $a = ’4’; $b = intval($a); echo $b . " " . gettype($b); /* affiche4 integer */

H & H: Research and Training 62 / 218 Pour faire le cast, on peut aussi utiliser (double)

$a = ’4.5’; $b = (double)$a; echo $b . " " . gettype($b); /* affiche 4.5 double */

Une deuxieme` solution avec la fonction floatval() ou doubleval()

$a = ’4.5’; $b = floatval($a); echo $b . " " . gettype($b); /* affiche4 double */

Fonctions utiles pour les chaˆınes de caracteres`

Pour convertir une chaˆıneen double (premiere` solution avec le cast)

$a = ’4.5’; $b = (float)$a; echo $b . " " . gettype($b); /* affiche 4.5 double */ c

c Achref EL MOUELHI

H & H: Research and Training 63 / 218 Une deuxieme` solution avec la fonction floatval() ou doubleval()

$a = ’4.5’; $b = floatval($a); echo $b . " " . gettype($b); /* affiche4 double */

Fonctions utiles pour les chaˆınes de caracteres`

Pour convertir une chaˆıneen double (premiere` solution avec le cast)

$a = ’4.5’; $b = (float)$a; echo $b . " " . gettype($b); /* affiche 4.5 double */ c Pour faire le cast, on peut aussi utiliser (double)

$a = ’4.5’; $b = (double)$a; echo $b . " " . gettype($b); /* affiche 4.5 double */ c Achref EL MOUELHI

H & H: Research and Training 63 / 218 Fonctions utiles pour les chaˆınes de caracteres`

Pour convertir une chaˆıneen double (premiere` solution avec le cast)

$a = ’4.5’; $b = (float)$a; echo $b . " " . gettype($b); /* affiche 4.5 double */ c Pour faire le cast, on peut aussi utiliser (double)

$a = ’4.5’; $b = (double)$a; echo $b . " " . gettype($b); /* affiche 4.5 double */ c Achref EL MOUELHI Une deuxieme` solution avec la fonction floatval() ou doubleval()

$a = ’4.5’; $b = floatval($a); echo $b . " " . gettype($b); /* affiche4 double */

H & H: Research and Training 63 / 218 Fonctions utiles pour les chaˆınes de caracteres` PHP

La fonction eval execute´ une chaˆınede caractere` pass cee´ en parametre` comme un script PHP $str = "echo 2 * 3;"; eval($str); /* affiche6 */ c Achref EL MOUELHI

H & H: Research and Training 64 / 218 Pour les conditions, on utilise des operateurs´ de comparaison

Conditions et boucles if PHP

Executer´ si une condition est vraie c if (condition) { ... }

c Achref EL MOUELHI

H & H: Research and Training 65 / 218 Conditions et boucles if PHP

Executer´ si une condition est vraie c if (condition) { ... } Achref EL MOUELHI Pour les conditions, c on utilise des operateurs´ de comparaison

H & H: Research and Training 65 / 218 Conditions et boucles if PHP

Operateurs´ de comparaison

== : pour tester l’egalit´ e´ des valeurs != : pour tester l’inegalit´ e´ des valeurs c === : pour tester l’egalit´ e´ des valeurs et des types !== : pour tester l’inegalit´ e´ des valeurs ou des types > : superieur´ Achrefa` EL MOUELHI < : inferieur´ c a` >= : superieur´ ou egal´ a` <= : inferieur´ ou egal´ a`

H & H: Research and Training 66 / 218 Conditions et boucles if PHP

Exemple c $x = 3; if ($x >= 0) { echo $x . " est positif"; } c Achref EL MOUELHI

H & H: Research and Training 67 / 218 Exemple $x = 3; if ($x > 0) { echo $x . " est strictement positif"; } else{ echo $x . " est negatif´ ou nul"; }

Conditions et boucles if ... else PHP

Executer´ un premier bloc si une condition est vraie, un deuxieme` sinon (le bloc else) if (condition1) { ... } else{ c ... }

c Achref EL MOUELHI

H & H: Research and Training 68 / 218 Conditions et boucles if ... else PHP

Executer´ un premier bloc si une condition est vraie, un deuxieme` sinon (le bloc else) if (condition1) { ... } else{ c ... }

Exemple Achref EL MOUELHI $x = 3; c if ($x > 0) { echo $x . " est strictement positif"; } else{ echo $x . " est negatif´ ou nul"; }

H & H: Research and Training 68 / 218 On peut ecrire´ elseif ou else if.

Conditions et boucles if ... elseif ... else PHP

On peut enchaˆınerles conditions avec else if (et avoir un troisieme` bloc voire ... un nieme)` if (condition1) { ... c } else if (condition2) { ... } ... else{ Achref EL MOUELHI ... c }

H & H: Research and Training 69 / 218 Conditions et boucles if ... elseif ... else PHP

On peut enchaˆınerles conditions avec else if (et avoir un troisieme` bloc voire ... un nieme)` if (condition1) { ... c } else if (condition2) { ... } ... else{ Achref EL MOUELHI ... c }

On peut ecrire´ elseif ou else if.

H & H: Research and Training 69 / 218 Conditions et boucles if ... elseif ... else PHP

Exemple $x = -3; c if ($x > 0) { echo $x . " est strictement positif"; } else if ($x < 0) { echo $x . " est strictement negatif";´ } else{ echo $xc .Achref " est nul"; EL MOUELHI }

H & H: Research and Training 70 / 218 Conditions et boucles if ... elseif ... else PHP

Exercice c

Ecrire´ un script PHP qui permet de determiner´ si une chaˆıne de caracteres` $ma chaine est vide ou si elle contient un nombre pair ou impair de caracteres.` c Achref EL MOUELHI

H & H: Research and Training 71 / 218 Conditions et boucles if ... elseif ... else PHP

Correction

H & H: Research and Training 72 / 218 Exercice

Ecrire´ un script PHP qui permet de verifier´ si une chaˆıne de caracteres` $ma chaine contient deux occurrences de $motif.

Conditions et boucles if ... elseif ... else PHP

Etant´ donnees´ les deux chaˆınesde caracteres` suivantes $ma_chaine = "Hello les holoulos"; $motif = "lo"; c

c Achref EL MOUELHI

H & H: Research and Training 73 / 218 Conditions et boucles if ... elseif ... else PHP

Etant´ donnees´ les deux chaˆınesde caracteres` suivantes $ma_chaine = "Hello les holoulos"; $motif = "lo"; c

Exercice Achref EL MOUELHI Ecrire´ un script c PHP qui permet de verifier´ si une chaˆıne de caracteres` $ma chaine contient deux occurrences de $motif.

H & H: Research and Training 73 / 218 Conditions et boucles if ... elseif ... else PHP

Correction

H & H: Research and Training 74 / 218 Tester plusieurs conditions (en utilisant des operateurs´ logiques) if (condition1 && !condition2 || condition3) { ... } [else ...]

Conditions et boucles if ... elseif ... else PHP

Operateurs´ logiques && ou and : et || ou or : ou c ! : non xor : ou exclusif

c Achref EL MOUELHI

H & H: Research and Training 75 / 218 Conditions et boucles if ... elseif ... else PHP

Operateurs´ logiques && ou and : et || ou or : ou c ! : non xor : ou exclusif

Achref EL MOUELHI Tester plusieurs c conditions (en utilisant des operateurs´ logiques) if (condition1 && !condition2 || condition3) { ... } [else ...]

H & H: Research and Training 75 / 218 Exercice Sans calculer la somme, ecrire´ un script PHP qui permet de determiner´ si le resultat´ sera pair ou impair.

Conditions et boucles if ... elseif ... else PHP

Etant´ donnees´ les deux variables suivantes $x = 2; $y = 3; c

c Achref EL MOUELHI

H & H: Research and Training 76 / 218 Conditions et boucles if ... elseif ... else PHP

Etant´ donnees´ les deux variables suivantes $x = 2; $y = 3; c

Exercice Achref EL MOUELHI Sans calculer c la somme, ecrire´ un script PHP qui permet de determiner´ si le resultat´ sera pair ou impair.

H & H: Research and Training 76 / 218 Deuxieme` solution

Conditions et boucles if ... elseif ... else PHP

Premiere` solution

c Achref EL MOUELHI

H & H: Research and Training 77 / 218 Conditions et boucles if ... elseif ... else PHP

Premiere` solution

Deuxieme` solution

H & H: Research and Training 77 / 218 Conditions et boucles switch PHP Structure conditionnelle switch : syntaxe switch ($nom_ariable) { case constante-1: groupe-instructions-1; break; c case constante-2: groupe-instructions-2; break; ... case constante-N:Achref EL MOUELHI groupe-instructions-N; c break; default: groupe-instructions-par-defaut;´ }

H & H: Research and Training 78 / 218 Conditions et boucles switch PHP

Remarques Le switch permet seulement de tester l’egalit´ e´ c Le break permet de quitter le switch une fois un bloc case execut´ e´ Il est possible de regrouper plusieurs case Achref EL MOUELHI Le bloc cdefault est facultatif, il sera executer´ si la valeur de la variable ne correspond a` aucune constante de case

H & H: Research and Training 79 / 218 Conditions et boucles switch PHP

Structure conditionnelle avec switch $x = 5; switch ($x) { case 1: echo("un"); c break; case 2: echo("deux"); break; case 3: echoc("trois");Achref EL MOUELHI break ; default: echo("autre"); }

H & H: Research and Training 80 / 218 Conditions et boucles switch PHP Un multi-case pour un seul traitement $x = 5; switch ($x) { case 1: case 2: c echo("un ou deux"); break; case 3: echo("trois"); break; case 4: Achref EL MOUELHI case 5: c echo("quatre ou cinq"); break; default: echo("autre"); }

H & H: Research and Training 81 / 218 Conditions et boucles switch PHP

Si on supprime un break $x = "2"; switch ($x) { case "1": echo("un"); c break; case "2": echo("deux"); case "3": echo("trois");Achref EL MOUELHI break c ; default: echo("autre"); } /* affiche deuxtrois */

H & H: Research and Training 82 / 218 Conditions et boucles switch PHP

c Exercice

Ecrire´ un script PHP qui permet d’afficher le nombre de jours d’un mois selon son indice. c Achref EL MOUELHI

H & H: Research and Training 83 / 218 Conditions et boucles switch Correction $indice_mois = 1; switch ($indice_mois) { case ’1’: case ’3’: case ’5’: case ’7’: case ’8’: case ’10’: c case ’12’: echo 31; break; case ’4’: case ’6’: case ’9’: case ’11’: echo Achref30; EL MOUELHI cbreak; case ’2’: echo ’28 ou 29’; break; default: echo "erreur"; break; }

H & H: Research and Training 84 / 218 La version simplifiee´ (sans else sans if) $x = 2; $type = ($x % 2 != 0) ?: "pair"; echo($type); /* affiche pair */

Conditions et boucles Elvis operator PHP

Simplifions l’ecriture´ avec l’expression ternaire (Elvis operator) $x = 2; $type = ($x % 2 == 0) ? "pair" : "impair"; echo($type); c /* affiche pair */

c Achref EL MOUELHI

H & H: Research and Training 85 / 218 Conditions et boucles Elvis operator PHP

Simplifions l’ecriture´ avec l’expression ternaire (Elvis operator) $x = 2; $type = ($x % 2 == 0) ? "pair" : "impair"; echo($type); c /* affiche pair */

La version simplifiAchrefee´ (sans ELelse MOUELHIsans if) $x = 2; c $type = ($x % 2 != 0) ?: "pair"; echo($type); /* affiche pair */

H & H: Research and Training 85 / 218 Conditions et boucles Null coalescing PHP

Pour tester si une variable existe ou si elle a une valeur differente´ de null, on peut utiliser Null coalescing (??) $result = $y ?? 5; c echo($result); /* affiche5 car $yn’existe pas */

$x = null; $result = $xAchref ?? 5; EL MOUELHI echo($result); c /* affiche5 car $xa la valeur null */

H & H: Research and Training 86 / 218 Attention aux boucles infinies, verifier´ que la condition d’arretˆ sera bien atteinte apres` un certain nombre d’iterations.´

Conditions et boucles while PHP

Boucle while : a` chaque iteration´ on teste si la condition est vraie avant d’acceder´ aux traitements c while (condition[s]) { ... }

c Achref EL MOUELHI

H & H: Research and Training 87 / 218 Conditions et boucles while PHP

Boucle while : a` chaque iteration´ on teste si la condition est vraie avant d’acceder´ aux traitements c while (condition[s]) { ... } Achref EL MOUELHI Attention aux c boucles infinies, verifier´ que la condition d’arretˆ sera bien atteinte apres` un certain nombre d’iterations.´

H & H: Research and Training 87 / 218 Le resultat´ est 0 1 2 3 4

Conditions et boucles while PHP

Exemple $i = 0; while ($i < 5) { echo $i, "
"; $i++; c }

c Achref EL MOUELHI

H & H: Research and Training 88 / 218 Conditions et boucles while PHP

Exemple $i = 0; while ($i < 5) { echo $i, "
"; $i++; c }

Le resultat´ est Achref EL MOUELHI 0 c 1 2 3 4

H & H: Research and Training 88 / 218 Exercice

Ecrire´ un script PHP qui permet de remplacer chaque caractere` d’indice impair de la chaine de caractere` $ma chaine par son equivalent´ en majuscule.

Conditions et boucles while PHP

Etant´ donnee´ la chaˆınede caracteres` suivante $ma_chaine = "hello les holoulos"; c

c Achref EL MOUELHI

H & H: Research and Training 89 / 218 Conditions et boucles while PHP

Etant´ donnee´ la chaˆınede caracteres` suivante $ma_chaine = "hello les holoulos"; c

Exercice Ecrire´ un script PHPAchrefqui permet EL de MOUELHI remplacer chaque caractere` d’indice impair c de la chaine de caractere` $ma chaine par son equivalent´ en majuscule.

H & H: Research and Training 89 / 218 Conditions et boucles while PHP

Correction

H & H: Research and Training 90 / 218 Attention aux boucles infinies, verifier´ que la condition d’arretˆ sera bien atteinte apres` un certain nombre d’iterations.´

Conditions et boucles do ... while PHP

La Boucle do ... while execute´ le bloc au moins une fois ensuite elle verifie´ la condition c do{ ... } while (condition[s]); c Achref EL MOUELHI

H & H: Research and Training 91 / 218 Conditions et boucles do ... while PHP

La Boucle do ... while execute´ le bloc au moins une fois ensuite elle verifie´ la condition c do{ ... } while (condition[s]); Achref EL MOUELHI Attention aux c boucles infinies, verifier´ que la condition d’arretˆ sera bien atteinte apres` un certain nombre d’iterations.´

H & H: Research and Training 91 / 218 Le resultat´ est 0 1 2 3 4

Conditions et boucles do ... while PHP

Exemple $i = 0; do{ echo $i, "
"; $i++; c } while ($i < 5);

c Achref EL MOUELHI

H & H: Research and Training 92 / 218 Conditions et boucles do ... while PHP

Exemple $i = 0; do{ echo $i, "
"; $i++; c } while ($i < 5);

Le resultat´ est Achref EL MOUELHI 0 c 1 2 3 4

H & H: Research and Training 92 / 218 Exercice

Ecrire´ un script PHP qui permet de compter le nombre de voyelles dans la chaine de caractere` $ma chaine.

Conditions et boucles do ... while PHP

Etant´ donnee´ la chaˆınede caracteres` suivante $ma_chaine = "hello les holoulos"; c

c Achref EL MOUELHI

H & H: Research and Training 93 / 218 Conditions et boucles do ... while PHP

Etant´ donnee´ la chaˆınede caracteres` suivante $ma_chaine = "hello les holoulos"; c

Exercice ´ Achref EL MOUELHI Ecrire un script c PHP qui permet de compter le nombre de voyelles dans la chaine de caractere` $ma chaine.

H & H: Research and Training 93 / 218 Conditions et boucles do ... while PHP

Correction

H & H: Research and Training 94 / 218 Attention aux boucles infinies si vous modifiez la valeur du compteur a` l’interieur´ de la boucle.

Conditions et boucles for PHP

Boucle for for (initialisation; condition[s]; incrementation)´ c { ... }

c Achref EL MOUELHI

H & H: Research and Training 95 / 218 Conditions et boucles for PHP

Boucle for for (initialisation; condition[s]; incrementation)´ c { ... }

Achref EL MOUELHI Attention aux c boucles infinies si vous modifiez la valeur du compteur a` l’interieur´ de la boucle.

H & H: Research and Training 95 / 218 Le resultat´ est 0 1 2 3 4

Conditions et boucles for PHP

Exemple for ($i = 0; $i < 5; $i++) { echo $i, "
"; } c

c Achref EL MOUELHI

H & H: Research and Training 96 / 218 Conditions et boucles for PHP

Exemple for ($i = 0; $i < 5; $i++) { echo $i, "
"; } c

Le resultat´ est 0 Achref EL MOUELHI 1 c 2 3 4

H & H: Research and Training 96 / 218 Premiere` solution for ($i = 0; $i < 10; $i++) { if ($i % 2 == 0) { echo $i, "
"; } }

Deuxieme` solution for ($i = 0; $i < 10; $i += 2) { echo $i, "
"; }

Conditions et boucles for

Exercice

Ecrire´ un code PHP qui permet d’afficher les nombres pairs compris entre 0 et 10.

c

c Achref EL MOUELHI

H & H: Research and Training 97 / 218 Deuxieme` solution for ($i = 0; $i < 10; $i += 2) { echo $i, "
"; }

Conditions et boucles for

Exercice

Ecrire´ un code PHP qui permet d’afficher les nombres pairs compris entre 0 et 10.

Premiere` solution c for ($i = 0; $i < 10; $i++) { if ($i % 2 == 0) { echo $i, "
"; } } c Achref EL MOUELHI

H & H: Research and Training 97 / 218 Conditions et boucles for

Exercice

Ecrire´ un code PHP qui permet d’afficher les nombres pairs compris entre 0 et 10.

Premiere` solution c for ($i = 0; $i < 10; $i++) { if ($i % 2 == 0) { echo $i, "
"; } } c Achref EL MOUELHI Deuxieme` solution for ($i = 0; $i < 10; $i += 2) { echo $i, "
"; }

H & H: Research and Training 97 / 218 Exercice

Ecrire´ un script PHP qui permet de compter le nombre de phrases et celui de mots de la chaine de caractere` $ma chaine.

Conditions et boucles for PHP

Etant´ donnee´ la chaˆınede caracteres` suivante $ma_chaine = "hello les holoulos. C’est toujours le confinement."; c

c Achref EL MOUELHI

H & H: Research and Training 98 / 218 Conditions et boucles for PHP

Etant´ donnee´ la chaˆınede caracteres` suivante $ma_chaine = "hello les holoulos. C’est toujours le confinement."; c

Exercice Achref EL MOUELHI Ecrire´ un script c PHP qui permet de compter le nombre de phrases et celui de mots de la chaine de caractere` $ma chaine.

H & H: Research and Training 98 / 218 Conditions et boucles for PHP

Correction #mots = $nbr_mots"; ?>

H & H: Research and Training 99 / 218 Exercice

Ecrire´ un script PHP qui permet d’afficher les tables d’addition, soustraction, multiplication et division de $nombre.

Conditions et boucles for PHP

Etant´ donnee´ la variable suivante $nombre = 5; c

c Achref EL MOUELHI

H & H: Research and Training 100 / 218 Conditions et boucles for PHP

Etant´ donnee´ la variable suivante $nombre = 5; c

Exercice ´ Achref EL MOUELHI Ecrire un script c PHP qui permet d’afficher les tables d’addition, soustraction, multiplication et division de $nombre.

H & H: Research and Training 100 / 218 Conditions et boucles for PHP

Correction

"; for ($i = 1; $i <= 10; $i++) { $operation = $nombre . " " . $op[$j] . " " . $i ; echo "$operation = "; eval("echo $operation .’
’;"); c} Achref EL MOUELHI echo "
"; } ?>