PHP : Les Fondamentaux
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 c 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 "
"; } ?>
H & H: Research and Training 101 / 218 Tableaux PHP
Trois types de tableaux c tableaux indexes´ : tableaux avec indices numeriques´ tableaux associatifs : tableaux avec indices personnalises´ tableaux multidimensionnels : tableaux contenant d’autres tableaux c Achref EL MOUELHI
H & H: Research and Training 102 / 218 Ou aussi $nombres = [ 2, 5, 8 ];
Tableaux Tableaux indexes´ PHP
Pour creer´ un tableau indexees´ d’entiers $nombres = array( 2, 5, 8 c );
c Achref EL MOUELHI
H & H: Research and Training 103 / 218 Tableaux Tableaux indexes´ PHP
Pour creer´ un tableau indexees´ d’entiers $nombres = array( 2, 5, 8 c );
Ou aussi Achref EL MOUELHI $nombres c = [ 2, 5, 8 ];
H & H: Research and Training 103 / 218 Pour acceder´ a` un el´ ement´ du tableau, on utilise son indice $nombres[1] = 6; echo $nombres[1]; /* affiche6 */
Tableaux Tableaux indexes´ PHP
Pour connaˆıtrele nombre d’el´ ements´ d’un tableau echo count($nombres); c /* affiche3 */
c Achref EL MOUELHI
H & H: Research and Training 104 / 218 Tableaux Tableaux indexes´ PHP
Pour connaˆıtrele nombre d’el´ ements´ d’un tableau echo count($nombres); c /* affiche3 */
Pour acceder´ a` un el´ ement´ du tableau, on utilise son indice $nombres[1]Achref = 6; EL MOUELHI echo $nombres[1]; c /* affiche6 */
H & H: Research and Training 104 / 218 Tableaux Tableaux indexes´ PHP
Les el´ ements´ d’un tableau ne doivent pas forcement´ avoir des indices consecutifs´ $nombres[5] = 6; c var_dump($nombres); /* affiche C:\wamp64\www\premier-cours-php\index.php:11: array(size=4) 0 => int2 1 => intc5 Achref EL MOUELHI 2 => int 8 5 => int6 */
H & H: Research and Training 105 / 218 Tableaux Tableaux indexes´ PHP
Pour ajouter un nouvel el´ ement´ au tableau tout en gardant la succession des indices $nombres[] = 6; c var_dump($nombres); /* affiche C:\wamp64\www\premier-cours-php\index.php:11: array(size=4) 0 => int2 1 => intc5 Achref EL MOUELHI 2 => int 8 3 => int6 */
H & H: Research and Training 106 / 218 Tableaux Tableaux indexes´ PHP
Pour mieux afficher un tableau, on peut utiliser la fonction print r() c $nombres[5] = 6; print_r($nombres); /* affiche Array ([0] =>Achref 2[1] => EL5[2] MOUELHI => 8[5] =>6) */ c
H & H: Research and Training 107 / 218 On peut aussi utiliser foreach foreach ($nombres as $value) { echo $value, "
"; }
Tableaux Tableaux indexes´ PHP
Pour parcourir un tableau, avec une boucle, el´ ement´ par el´ ement´ for($i = 0; $i < count($nombres); $i++) { echo $nombres[$i], "
"; c }
c Achref EL MOUELHI
H & H: Research and Training 108 / 218 Tableaux Tableaux indexes´ PHP
Pour parcourir un tableau, avec une boucle, el´ ement´ par el´ ement´ for($i = 0; $i < count($nombres); $i++) { echo $nombres[$i], "
"; c }
On peut aussi utiliserAchrefforeach EL MOUELHI foreach ($nombresc as $value) { echo $value, "
"; }
H & H: Research and Training 108 / 218 Exercice
Ecrire´ un script PHP qui permet de calculer la somme des longueurs des chaˆınes de caracteres` definies´ dans $voitures.
Tableaux Tableaux indexes´ PHP
Etant´ donne´ le tableau suivant $voitures = [’peugeot’, ’ford’, ’fiat’, ’mercedes’, ’seat’]; c
c Achref EL MOUELHI
H & H: Research and Training 109 / 218 Tableaux Tableaux indexes´ PHP
Etant´ donne´ le tableau suivant $voitures = [’peugeot’, ’ford’, ’fiat’, ’mercedes’, ’seat’]; c
Exercice Achref EL MOUELHI Ecrire´ un script c PHP qui permet de calculer la somme des longueurs des chaˆınes de caracteres` definies´ dans $voitures.
H & H: Research and Training 109 / 218 Tableaux Tableaux indexes´ PHP
Correction c $voitures = [’peugeot’, ’ford’, ’fiat’, ’mercedes’, ’seat’]; $total_caracteres = 0; foreach ($voitures as $value) { $total_caracteres += strlen($value); } echo $total_caracteres; c Achref EL MOUELHI
H & H: Research and Training 110 / 218 Exercice
Ecrire´ un script PHP qui permet de calculer nombre d’occurrence de $voiture dans $voitures.
Tableaux Tableaux indexes´ PHP
Etant´ donnees´ les deux variables suivantes $voiture = ’ford’; $voitures = [’peugeot’, ’ford’, ’fiat’, ’mercedes’, c ’seat’, ’ford’, ’fiat’, ’ford’];
c Achref EL MOUELHI
H & H: Research and Training 111 / 218 Tableaux Tableaux indexes´ PHP
Etant´ donnees´ les deux variables suivantes $voiture = ’ford’; $voitures = [’peugeot’, ’ford’, ’fiat’, ’mercedes’, c ’seat’, ’ford’, ’fiat’, ’ford’];
Exercice c Achref EL MOUELHI Ecrire´ un script PHP qui permet de calculer nombre d’occurrence de $voiture dans $voitures.
H & H: Research and Training 111 / 218 Deuxieme` solution $occurrence = 0; foreach ($voitures as $value) { $occurrence += ($value == $voiture); } echo $occurrence;
Tableaux Tableaux indexes´ PHP
Premiere` solution $occurrence = 0; foreach ($voitures as $value) { if ($value == $voiture) { $occurrence++; c } } echo $occurrence;
c Achref EL MOUELHI
H & H: Research and Training 112 / 218 Tableaux Tableaux indexes´ PHP
Premiere` solution $occurrence = 0; foreach ($voitures as $value) { if ($value == $voiture) { $occurrence++; c } } echo $occurrence;
Achref EL MOUELHI Deuxieme` solution c $occurrence = 0; foreach ($voitures as $value) { $occurrence += ($value == $voiture); } echo $occurrence;
H & H: Research and Training 112 / 218 On peut aussi comparer des types differents´ echo(array_search("8", $nombres)); /* affiche2 */
Pour comparer les valeurs et les types, on ajoute un troisieme` parametre` optionnel echo(array_search("5", $nombres, true)); /* n’affiche rien */
Tableaux Tableaux indexes´ PHP
Pour chercher un el´ ement´ dans un tableau indexe´ echo(array_search(8, $nombres)); /* affiche2 */ c
c Achref EL MOUELHI
H & H: Research and Training 113 / 218 Pour comparer les valeurs et les types, on ajoute un troisieme` parametre` optionnel echo(array_search("5", $nombres, true)); /* n’affiche rien */
Tableaux Tableaux indexes´ PHP
Pour chercher un el´ ement´ dans un tableau indexe´ echo(array_search(8, $nombres)); /* affiche2 */ c On peut aussi comparer des types differents´ echo(array_search("8", $nombres)); /* affiche2 */ c Achref EL MOUELHI
H & H: Research and Training 113 / 218 Tableaux Tableaux indexes´ PHP
Pour chercher un el´ ement´ dans un tableau indexe´ echo(array_search(8, $nombres)); /* affiche2 */ c On peut aussi comparer des types differents´ echo(array_search("8", $nombres)); /* affiche2 */ c Achref EL MOUELHI Pour comparer les valeurs et les types, on ajoute un troisieme` parametre` optionnel echo(array_search("5", $nombres, true)); /* n’affiche rien */
H & H: Research and Training 113 / 218 Pour comparer les valeurs et les types, on ajoute un troisieme` parametre` optionnel echo(in_array("8", $nombres, true)); /* n’affiche rien */
Tableaux Tableaux indexes´ PHP
La fonction in array() retourne un booleen´ echo(in_array("8", $nombres)); /* affiche1 */ c echo(in_array(145, $nombres)); /* n’affiche rien */
c Achref EL MOUELHI
H & H: Research and Training 114 / 218 Tableaux Tableaux indexes´ PHP
La fonction in array() retourne un booleen´ echo(in_array("8", $nombres)); /* affiche1 */ c echo(in_array(145, $nombres)); /* n’affiche rien */
Achref EL MOUELHI Pour comparer c les valeurs et les types, on ajoute un troisieme` parametre` optionnel echo(in_array("8", $nombres, true)); /* n’affiche rien */
H & H: Research and Training 114 / 218 Tableaux Tableaux indexes´
Quelques fonctions sur les tableaux indexes´
range($min, $max : retourne un tableau de valeurs sequentielles´ comprises entre $min et $max array pop(tableau) : supprime le dernier el´ ement´ d’un tableau
array push(tableau, $valeur1, $valeur2...) : ajoute $valeur1, $valeur2... comme derniers el´ ements´ d’un tableau c array sum(tableau) (respectivement array product(tableau)) : retourne la somme (resp. le produit) des el´ ements´ d’un tableau
array reverse(tableau) : retourne les el´ ements´ d’un tableau dans le sens inverse array shuffle(tableau)Achref: desordonne´ EL MOUELHI les el´ ements´ d’un tableau array unique(tableau) c : supprime les doublons d’un tableau sort(tableau) : trie les el´ ements´ d’un tableau dans le sens ascendant
rsort(tableau) : trie les el´ ements´ d’un tableau dans le sens descendant
...
H & H: Research and Training 115 / 218 Aucun el´ ement´ supprime´ car le troisieme` parametre` = 0
Tableaux Tableaux indexes´ PHP
Exemple avec splice $sports = ["foot", "tennis", "basket", "volley"]; $new = ["rugby", "natation"];
$tab = array_splice($sports, 2, 0, $new); c
print_r($sports); /* affiche Array ([0] => foot[1] => tennis[2] => rugby[3] => natation[4] => basket[5] => volley) */ c Achref EL MOUELHI print_r($tab) /* affiche Array() */
H & H: Research and Training 116 / 218 Tableaux Tableaux indexes´ PHP
Exemple avec splice $sports = ["foot", "tennis", "basket", "volley"]; $new = ["rugby", "natation"];
$tab = array_splice($sports, 2, 0, $new); c
print_r($sports); /* affiche Array ([0] => foot[1] => tennis[2] => rugby[3] => natation[4] => basket[5] => volley) */ c Achref EL MOUELHI print_r($tab) /* affiche Array() */
Aucun el´ ement´ supprime´ car le troisieme` parametre` = 0
H & H: Research and Training 116 / 218 Un seul el´ ement´ supprime´ car le deuxieme` parametre` = 1
Tableaux Tableaux indexes´ PHP
Exemple avec splice $sports = ["foot", "tennis", "basket", "volley"]; $new = ["rugby", "natation"]; c $tab = array_splice($sports, 2, 1, $new);
print_r($sports); /* affiche Array ([0] => foot[1] => tennis[2] => rugby[3] => natation[4] => volley) */ c Achref EL MOUELHI print_r($tab); /* affiche Array ([0] => basket) */
H & H: Research and Training 117 / 218 Tableaux Tableaux indexes´ PHP
Exemple avec splice $sports = ["foot", "tennis", "basket", "volley"]; $new = ["rugby", "natation"]; c $tab = array_splice($sports, 2, 1, $new);
print_r($sports); /* affiche Array ([0] => foot[1] => tennis[2] => rugby[3] => natation[4] => volley) */ c Achref EL MOUELHI print_r($tab); /* affiche Array ([0] => basket) */
Un seul el´ ement´ supprime´ car le deuxieme` parametre` = 1
H & H: Research and Training 117 / 218 Tableaux Tableaux indexes´ PHP
A` ne pas confondre avec slice qui permet d’extraire un sous-tableau sans modifier le tableau d’origine $sports = ["foot", "tennis", "basket", "volley"]; c $tab = array_slice($sports, 0, 2);
print_r($sports); /* affiche ArrayAchref ([0] EL=> foot MOUELHI[1] => tennis[2] => basket [3]c => volley) */ print_r($tab); /* affiche Array ([0] => foot[1] => tennis) */
H & H: Research and Training 118 / 218 La fonction explode permet de transformer une chaˆınede caracteres` en tableau $string = "bonjour john wick"; print_r(explode(" ", $string)); /* affiche Array ([0] => bonjour[1] => john[2] => wick) */
Tableaux Tableaux indexes´ PHP
La fonction implode permet de transformer un tableau en chaˆınede caracteres` $sports = ["foot", "tennis", "basket", "volley"]; $string = implode("-", $sports);
echo $string; c /* affiche foot-tennis-basket-volley */
echo gettype($string); /* affiche string */ c Achref EL MOUELHI
H & H: Research and Training 119 / 218 Tableaux Tableaux indexes´ PHP
La fonction implode permet de transformer un tableau en chaˆınede caracteres` $sports = ["foot", "tennis", "basket", "volley"]; $string = implode("-", $sports);
echo $string; c /* affiche foot-tennis-basket-volley */
echo gettype($string); /* affiche string */ c Achref EL MOUELHI La fonction explode permet de transformer une chaˆınede caracteres` en tableau $string = "bonjour john wick"; print_r(explode(" ", $string)); /* affiche Array ([0] => bonjour[1] => john[2] => wick) */
H & H: Research and Training 119 / 218 Tableaux Tableaux indexes´ PHP
Pour transformer une chaˆınede caracteres` en tableau de caracteres,` on utilise la fonction str split c $string = "bonjour john wick"; print_r(str_split($string)); /* affiche Array ([0] =>b[1] =>o[2] =>n[3] =>j [4] =>o[5] =>u[6] =>r[7] =>[8] =>j[9] =>o [10] =>h[11]Achref =>n[12] EL =>[13] MOUELHI =>w[14] =>i[15] =>c[16] c =>k) */
H & H: Research and Training 120 / 218 Pour ajouter un nouvel el´ ement´ $fcb["rakitic"] = 4;
Pour afficher les el´ ements´ d’un tableau associatif var_dump($fcb); /* C:\wamp64\www\premier-cours-php\index.php:11: array(size=4) ’messi’ => int 10 ’umtiti’ => int 23 ’suarez’ => int9 ’rakitic’ => int4 */
Tableaux Tableaux associatifs PHP
Pour creer´ un tableau associatif (ensemble cle´ ⇒ valeur) $fcb = array( "messi" => 10, "umtiti" => 23, "suarez" => 9 ); c
c Achref EL MOUELHI
H & H: Research and Training 121 / 218 Pour afficher les el´ ements´ d’un tableau associatif var_dump($fcb); /* C:\wamp64\www\premier-cours-php\index.php:11: array(size=4) ’messi’ => int 10 ’umtiti’ => int 23 ’suarez’ => int9 ’rakitic’ => int4 */
Tableaux Tableaux associatifs PHP
Pour creer´ un tableau associatif (ensemble cle´ ⇒ valeur) $fcb = array( "messi" => 10, "umtiti" => 23, "suarez" => 9 ); c
Pour ajouter un nouvel el´ ement´ $fcb["rakitic"] = 4;
c Achref EL MOUELHI
H & H: Research and Training 121 / 218 Tableaux Tableaux associatifs PHP
Pour creer´ un tableau associatif (ensemble cle´ ⇒ valeur) $fcb = array( "messi" => 10, "umtiti" => 23, "suarez" => 9 ); c
Pour ajouter un nouvel el´ ement´ $fcb["rakitic"] = 4;
Pour afficher les el´ ements´ Achref d’un tableau EL associatif MOUELHI var_dump($fcb); c /* C:\wamp64\www\premier-cours-php\index.php:11: array(size=4) ’messi’ => int 10 ’umtiti’ => int 23 ’suarez’ => int9 ’rakitic’ => int4 */
H & H: Research and Training 121 / 218 Le resultat´ est messi => 10 umtiti => 23 suarez => 9
Tableaux Tableaux associatifs PHP
Pour parcourir un tableau associatif el´ ement´ par el´ ement´ foreach ($fcb as $key => $value) { echo $key, " => ", $value, "
"; c }
c Achref EL MOUELHI
H & H: Research and Training 122 / 218 Tableaux Tableaux associatifs PHP
Pour parcourir un tableau associatif el´ ement´ par el´ ement´ foreach ($fcb as $key => $value) { echo $key, " => ", $value, "
"; c }
Le resultat´ est Achref EL MOUELHI messi => c 10 umtiti => 23 suarez => 9
H & H: Research and Training 122 / 218 Le resultat´ est le memeˆ messi => 10 umtiti => 23 suarez => 9
Tableaux Tableaux associatifs PHP
On peut aussi faire foreach(array_keys($fcb) as $key) { echo $key, " => ", $fcb[$key], "
"; c }
c Achref EL MOUELHI
H & H: Research and Training 123 / 218 Tableaux Tableaux associatifs PHP
On peut aussi faire foreach(array_keys($fcb) as $key) { echo $key, " => ", $fcb[$key], "
"; c }
Le resultat´ est leAchref memeˆ EL MOUELHI messi => c 10 umtiti => 23 suarez => 9
H & H: Research and Training 123 / 218 Tableaux Tableaux associatifs PHP
Les cles´ (respectivement les valeurs) peuvent ne pas avoir les memeˆ types $mixte = array( 17 => 10, "umtiti" => 23, c "suarez" => 9 ); $mixte[2] = true;
var_dump($mixte); /* afficheC:\wamp64Achref\www\ ELpremier MOUELHI-cours-php\index.php:11: array(size c=4) 17 => int 10 ’umtiti’ => int 23 ’suarez’ => int9 2 => boolean true */
H & H: Research and Training 124 / 218 Tableaux Tableaux associatifs PHP
Quelques fonctions sur les tableaux associatifs array key exists() : verifie´ si une cle´ existe c array values() : retourne la liste des valeurs array flip : transforme les cles´ en valeurs et les valeurs en cles´ ksort() : trie un tableau associatif selon les cles´ dans un ordre croissant Achref EL MOUELHI krsort() c : trie un tableau associatif selon les cles´ dans un ordre decroissant´ ...
H & H: Research and Training 125 / 218 Exercice
Ecrire´ un script PHP qui permet de verifier´ si $valeur est associee´ a` $cle.
Tableaux Tableaux associatifs PHP
Etant´ donnees´ les variables suivantes $cle = "messi"; $valeur = 10; $fcb = array( "messi" => 10, c "umtiti" => 23, "suarez" => 9 ); c Achref EL MOUELHI
H & H: Research and Training 126 / 218 Tableaux Tableaux associatifs PHP
Etant´ donnees´ les variables suivantes $cle = "messi"; $valeur = 10; $fcb = array( "messi" => 10, c "umtiti" => 23, "suarez" => 9 ); c Achref EL MOUELHI Exercice
Ecrire´ un script PHP qui permet de verifier´ si $valeur est associee´ a` $cle.
H & H: Research and Training 126 / 218 Tableaux Tableaux associatifs PHP
c Correction echo ($fcb[$cle] == $valeur) ? "$cle est le numero´ $valeur" : " $cle n’a pas le numero´ $valeur";
c Achref EL MOUELHI
H & H: Research and Training 127 / 218 Exercice
Ecrire´ un script PHP qui permet de determiner´ l’ensemble de cles´ associees´ a` $valeur.
Tableaux Tableaux associatifs PHP
Etant´ donnees´ les variables suivantes $valeur = 10; $fcb = array( "messi" => 10, "umtiti" => 23, c "suarez" => 9, "rivaldo" => 9, "maradona" => 10, "figo" => 9 ); c Achref EL MOUELHI
H & H: Research and Training 128 / 218 Tableaux Tableaux associatifs PHP
Etant´ donnees´ les variables suivantes $valeur = 10; $fcb = array( "messi" => 10, "umtiti" => 23, c "suarez" => 9, "rivaldo" => 9, "maradona" => 10, "figo" => 9 ); c Achref EL MOUELHI
Exercice
Ecrire´ un script PHP qui permet de determiner´ l’ensemble de cles´ associees´ a` $valeur.
H & H: Research and Training 128 / 218 Tableaux Tableaux associatifs PHP
Correction $cles = []; c foreach ($fcb as $key => $value) { if ($valeur == $value) { $cles[] = $key; } } Achref EL MOUELHI print_r($cles); c
H & H: Research and Training 129 / 218 Pour acceder´ a` un el´ ement´ echo($langages[2][0]); /* affiche php */
Pour ajouter un el´ ement´ $langages[3] = array("c", "c++");
Tableaux Tableaux multidimensionnels PHP Pour creer´ un tableau multidimensionnel $langages = array ( array("html", "css"), array("js", "ts"), array("php", "java", "csharp") c );
c Achref EL MOUELHI
H & H: Research and Training 130 / 218 Pour ajouter un el´ ement´ $langages[3] = array("c", "c++");
Tableaux Tableaux multidimensionnels PHP Pour creer´ un tableau multidimensionnel $langages = array ( array("html", "css"), array("js", "ts"), array("php", "java", "csharp") c );
Pour acceder´ a` un el´ ement´ echo($langages[2][0]);Achref EL MOUELHI /* affiche c php */
H & H: Research and Training 130 / 218 Tableaux Tableaux multidimensionnels PHP Pour creer´ un tableau multidimensionnel $langages = array ( array("html", "css"), array("js", "ts"), array("php", "java", "csharp") c );
Pour acceder´ a` un el´ ement´ echo($langages[2][0]);Achref EL MOUELHI /* affiche c php */
Pour ajouter un el´ ement´ $langages[3] = array("c", "c++");
H & H: Research and Training 130 / 218 Exercice
Ecrire´ un script PHP qui permet de calculer le nombre d’occurrence de $valeur dans $matrice par ligne.
Tableaux Tableaux multidimensionnels PHP
Etant´ donnees´ les variables suivantes $valeur = 5; $matrice = array( array(2, 3, 5, 7), c array(1, 2, 5, 9, 5), array(4, 2, 9, 3, 1, 5) );
c Achref EL MOUELHI
H & H: Research and Training 131 / 218 Tableaux Tableaux multidimensionnels PHP
Etant´ donnees´ les variables suivantes $valeur = 5; $matrice = array( array(2, 3, 5, 7), c array(1, 2, 5, 9, 5), array(4, 2, 9, 3, 1, 5) );
Achref EL MOUELHI Exercice c
Ecrire´ un script PHP qui permet de calculer le nombre d’occurrence de $valeur dans $matrice par ligne.
H & H: Research and Training 131 / 218 Tableaux Tableaux multidimensionnels PHP
Correction $compteurs = [0, 0, 0]; for ($i = 0; $i < count($matrice); $i++) { c foreach ($matrice[$i] as $value) { if ($value == $valeur) { $compteurs[$i]++; } } Achref EL MOUELHI } c print_r($compteurs);
H & H: Research and Training 132 / 218 Exercice
Ecrire´ un script PHP qui permet de determiner´ si $valeur est presente´ dans chaque ligne de $matrice.
Tableaux Tableaux multidimensionnels PHP
Etant´ donnees´ les variables suivantes $valeur = 5; $matrice = array( array(2, 3, 5, 7), c array(1, 2, 5, 9, 5), array(4, 2, 9, 3, 1, 5) );
c Achref EL MOUELHI
H & H: Research and Training 133 / 218 Tableaux Tableaux multidimensionnels PHP
Etant´ donnees´ les variables suivantes $valeur = 5; $matrice = array( array(2, 3, 5, 7), c array(1, 2, 5, 9, 5), array(4, 2, 9, 3, 1, 5) );
Achref EL MOUELHI Exercice c
Ecrire´ un script PHP qui permet de determiner´ si $valeur est presente´ dans chaque ligne de $matrice.
H & H: Research and Training 133 / 218 Tableaux Tableaux multidimensionnels PHP
Correction $trouver = true; c for ($i = 0; $i < count($matrice) && $trouver; $i++) { if(!in_array($valeur, $matrice[$i])) { $trouver = false; } } Achref EL MOUELHI print($trouver c ? "oui" : "non");
H & H: Research and Training 134 / 218 Pour declarer´ une constante,
Utilise la fonction define(nom constante, valeur, insensibilite´ a` la casse) : le dernier parametre` est facultatif et sa valeur par defaut´ est false
Exemple (Par convention , les constantes sont toujours ecrites´ en majuscules) define(PI, 3.1415);
L’instruction suivante ne peut etreˆ acceptee´ PI = 5;
Constantes PHP
Une constante
un el´ ement´ qui ne peut changer de valeur c
c Achref EL MOUELHI
H & H: Research and Training 135 / 218 Exemple (Par convention , les constantes sont toujours ecrites´ en majuscules) define(PI, 3.1415);
L’instruction suivante ne peut etreˆ acceptee´ PI = 5;
Constantes PHP
Une constante
un el´ ement´ qui ne peut changer de valeur c Pour declarer´ une constante,
Utilise la fonction define(nom constante, valeur, insensibilite´ a` la casse) : le dernier parametre` est facultatif et sa valeur par defaut´ est false
c Achref EL MOUELHI
H & H: Research and Training 135 / 218 L’instruction suivante ne peut etreˆ acceptee´ PI = 5;
Constantes PHP
Une constante
un el´ ement´ qui ne peut changer de valeur c Pour declarer´ une constante,
Utilise la fonction define(nom constante, valeur, insensibilite´ a` la casse) : le dernier parametre` est facultatif et sa valeur par defaut´ est false
Exemple (Par c conventionAchref , les constantes EL MOUELHI sont toujours ecrites´ en majuscules) define(PI, 3.1415);
H & H: Research and Training 135 / 218 Constantes PHP
Une constante
un el´ ement´ qui ne peut changer de valeur c Pour declarer´ une constante,
Utilise la fonction define(nom constante, valeur, insensibilite´ a` la casse) : le dernier parametre` est facultatif et sa valeur par defaut´ est false
Exemple (Par c conventionAchref , les constantes EL MOUELHI sont toujours ecrites´ en majuscules) define(PI, 3.1415);
L’instruction suivante ne peut etreˆ acceptee´ PI = 5;
H & H: Research and Training 135 / 218 Constantes PHP
c Remarques
Le nom d’une constante ne doit pas contenir les caracteres` $ ni Depuis PHP 7, on peut declarer´ un tableau de constantes. c Achref EL MOUELHI
H & H: Research and Training 136 / 218 Particularite´ du langage PHP
Le nom d’une fonction n’est pas sensible a` la casse Depuis PHP 7, on peut typer les parametres` et la valeur de retour
Fonctions PHP
Une fonction ? Un bloc d’instructions pouvant etreˆ appele´ plusieurs fois
Declaration´ d’une fonction ; son execution´ c Appel d’une fonction ⇒ son execution´
c Achref EL MOUELHI
H & H: Research and Training 137 / 218 Fonctions PHP
Une fonction ? Un bloc d’instructions pouvant etreˆ appele´ plusieurs fois
Declaration´ d’une fonction ; son execution´ c Appel d’une fonction ⇒ son execution´
Achref EL MOUELHI Particularite ´c du langage PHP Le nom d’une fonction n’est pas sensible a` la casse Depuis PHP 7, on peut typer les parametres` et la valeur de retour
H & H: Research and Training 137 / 218 Exemple function somme($a, $b) { return $a + $b; }
Appeler une fonction $resultat = somme (1, 3); echo $resultat; /* affiche4 */
Fonctions Fonctions nommees´ PHP Declarer´ une fonction function nom_fonction([les arguments]) { les instructions de la fonction } c
c Achref EL MOUELHI
H & H: Research and Training 138 / 218 Appeler une fonction $resultat = somme (1, 3); echo $resultat; /* affiche4 */
Fonctions Fonctions nommees´ PHP Declarer´ une fonction function nom_fonction([les arguments]) { les instructions de la fonction } c Exemple function somme($a, $b) { return $a + $b; } c Achref EL MOUELHI
H & H: Research and Training 138 / 218 Fonctions Fonctions nommees´ PHP Declarer´ une fonction function nom_fonction([les arguments]) { les instructions de la fonction } c Exemple function somme($a, $b) { return $a + $b; } c Achref EL MOUELHI
Appeler une fonction $resultat = somme (1, 3); echo $resultat; /* affiche4 */
H & H: Research and Training 138 / 218 Fonctions Fonctions nommees´ PHP
c Exercice
Ecrire´ une fonction PHP qui permet de determiner´ si un nombre passe´ en parametre` est premier. La fonction retourne un booleen.´ c Achref EL MOUELHI
H & H: Research and Training 139 / 218 Exemple $somme2 = function ($a, $b) { return $a + $b; };
Appeler une fonction anonyme $resultat = $somme2 (1, 3); echo $resultat; /* affiche4 */
Fonctions Fonctions anonymes PHP Declarer´ une fonction anonyme (appelee´ aussi closure ou fermeture) $nom_variable = function ([les arguments]) { les instructions de la fonction } c
c Achref EL MOUELHI
H & H: Research and Training 140 / 218 Appeler une fonction anonyme $resultat = $somme2 (1, 3); echo $resultat; /* affiche4 */
Fonctions Fonctions anonymes PHP Declarer´ une fonction anonyme (appelee´ aussi closure ou fermeture) $nom_variable = function ([les arguments]) { les instructions de la fonction } c
Exemple $somme2 = function ($a, $b) { return $a + $b; }; c Achref EL MOUELHI
H & H: Research and Training 140 / 218 Fonctions Fonctions anonymes PHP Declarer´ une fonction anonyme (appelee´ aussi closure ou fermeture) $nom_variable = function ([les arguments]) { les instructions de la fonction } c
Exemple $somme2 = function ($a, $b) { return $a + $b; }; c Achref EL MOUELHI
Appeler une fonction anonyme $resultat = $somme2 (1, 3); echo $resultat; /* affiche4 */
H & H: Research and Training 140 / 218 Solution : affecter des valeurs par defaut´ aux parametres`
function somme($a = 0, $b = 0) { return $a + $b; }
Ainsi, on peut appeler la fonction avec 0, 1 ou deux parametres`
echo somme (); /* affiche0 */
echo somme (5); /* affiche5 */
echo somme (5, 3); /* affiche8 */
Fonctions Valeurs par defaut´ pour les parametres`
Appeler la fonction somme sans passer de parametres` ⇒ erreur fatale
echo(somme());
c
c Achref EL MOUELHI
H & H: Research and Training 141 / 218 Ainsi, on peut appeler la fonction avec 0, 1 ou deux parametres`
echo somme (); /* affiche0 */
echo somme (5); /* affiche5 */
echo somme (5, 3); /* affiche8 */
Fonctions Valeurs par defaut´ pour les parametres`
Appeler la fonction somme sans passer de parametres` ⇒ erreur fatale
echo(somme());
Solution : affecter des valeurs par defaut´ aux parametres`
function somme($a = 0, $b = 0) { c return $a + $b; }
c Achref EL MOUELHI
H & H: Research and Training 141 / 218 Fonctions Valeurs par defaut´ pour les parametres`
Appeler la fonction somme sans passer de parametres` ⇒ erreur fatale
echo(somme());
Solution : affecter des valeurs par defaut´ aux parametres`
function somme($a = 0, $b = 0) { c return $a + $b; }
Ainsi, on peut appeler la fonction avec 0, 1 ou deux parametres` echo somme (); Achref EL MOUELHI /* affiche0 c*/ echo somme (5); /* affiche5 */
echo somme (5, 3); /* affiche8 */
H & H: Research and Training 141 / 218 Tous ces appels sont corrects echo(somme(2, 3, 5)); /* affiche 10 */
echo(somme(2, 3)); /* affiche5 */
echo(somme(2, 3, 5, 7)); /* affiche 17 */
echo(somme(2)); /* affiche2 */
Fonctions Fonctions a` nombre indetermin´ e´ de parametres` Pour ecrire´ une fonction qui accepte un nombre indetermin´ e´ de parametres,` on peut utiliser les fonctions func get args() et func num args() function somme () { $arguments = func_get_args(); $result = 0; for($i = 0; $i < func_num_args(); $i++) { $result += $arguments[$i]; } c return $result; }
c Achref EL MOUELHI
H & H: Research and Training 142 / 218 Fonctions Fonctions a` nombre indetermin´ e´ de parametres` Pour ecrire´ une fonction qui accepte un nombre indetermin´ e´ de parametres,` on peut utiliser les fonctions func get args() et func num args() function somme () { $arguments = func_get_args(); $result = 0; for($i = 0; $i < func_num_args(); $i++) { $result += $arguments[$i]; } c return $result; } Tous ces appels sont corrects echo(somme(2, 3, 5)); / affiche 10 / * * Achref EL MOUELHI echo(somme(2,c 3)); /* affiche5 */
echo(somme(2, 3, 5, 7)); /* affiche 17 */
echo(somme(2)); /* affiche2 */
H & H: Research and Training 142 / 218 Tous ces appels restent corrects
echo(somme(2, 3, 5)); /* affiche 10 */
echo(somme(2, 3)); /* affiche5 */
echo(somme(2, 3, 5, 7)); /* affiche 17 */
echo(somme(2)); /* affiche2 */
Fonctions Fonctions a` nombre indetermin´ e´ de parametres`
Depuis PHP 5.6, on peut aussi utiliser le concept de decomposition´ avec l’operateur´ ...
function somme (...$arguments) { $result = 0; for($i = 0; $i < count($arguments) ; $i++) { $result += $arguments[$i]; } return $result; } c
c Achref EL MOUELHI
H & H: Research and Training 143 / 218 Fonctions Fonctions a` nombre indetermin´ e´ de parametres`
Depuis PHP 5.6, on peut aussi utiliser le concept de decomposition´ avec l’operateur´ ...
function somme (...$arguments) { $result = 0; for($i = 0; $i < count($arguments) ; $i++) { $result += $arguments[$i]; } return $result; } c
Tous ces appels restent corrects
echo(somme(2, 3, 5)); /* affiche 10 */ echo(somme(2, 3));Achref EL MOUELHI /* affiche5 c*/ echo(somme(2, 3, 5, 7)); /* affiche 17 */
echo(somme(2)); /* affiche2 */
H & H: Research and Training 143 / 218 Fonctions Fonctions a` nombre indetermin´ e´ de parametres` PHP
Exercice Ecrire´ une fonction PHP qui permet de determiner´ si le premier c parametre` est divisible par tous les autres parametres.` Le nombre de parametres` est variable et la fonction retourne un booleen.´
Exemple c Achref EL MOUELHI var_dump(est_divisible_par(10, 2, 3, 5)); var_dump(est_divisible_par(10, 2, 5));
H & H: Research and Training 144 / 218 Fonctions Fonctions a` nombre indetermin´ e´ de parametres` PHP
Correction function est_divisible_par($nombre, ...$diviseurs) c { foreach ($diviseurs as $diviseur) { if ($nombre % $diviseur != 0) return false; } return trueAchref; EL MOUELHI } c
H & H: Research and Training 145 / 218 Fonctions Decomposition´ PHP
Depuis PHP 7.4, il est possible de decomposer´ un tableau avec l’operateur´ ... $nombres = array( c 2, 5, 8 ); $tab = [0,c 1,Achref ...$nombres, EL MOUELHI 7]; print_r($tab); // affiche Array( [0] =>0 [1] =>1 [2] =>2 [3] => 5 [4] =>8 [5] =>7)
H & H: Research and Training 146 / 218 Voici a` quoi en pense la premiere` fois function permuter($a, $b) { $aux = $a; $a = $b; $b = $aux; }
Fonctions Passage par ref´ erence´ PHP
Exercice
Ecrire´ une fonction qui permet de permuter le contenu de deux variables (de type entier par exemple) passees´ en param etre`c
c Achref EL MOUELHI
H & H: Research and Training 147 / 218 Fonctions Passage par ref´ erence´ PHP
Exercice
Ecrire´ une fonction qui permet de permuter le contenu de deux variables (de type entier par exemple) passees´ en param etre`c
Voici a` quoi en pense la premiere` fois function permuter($a,Achref EL $b) MOUELHI { c $aux = $a; $a = $b; $b = $aux; }
H & H: Research and Training 147 / 218 Et pourtant, si on verifie´ dans la fonction, les valeurs ont bien et´ e´ permutees´ function permuter($a, $b) { $aux = $a; $a = $b; $b = $aux; echo $a, " ", $b; /* affiche32 */ }
Fonctions Passage par ref´ erence´ PHP
En testant ce code, c’est la surprise $x = 2; $y = 3; permuter($x, $y); echo $x, " ", $y; /* affiche23 */ c
c Achref EL MOUELHI
H & H: Research and Training 148 / 218 Fonctions Passage par ref´ erence´ PHP
En testant ce code, c’est la surprise $x = 2; $y = 3; permuter($x, $y); echo $x, " ", $y; /* affiche23 */ c
Et pourtant, si on verifie´ dans la fonction, les valeurs ont bien et´ e´ permutees´ function permuter($a, $b) { Achref EL MOUELHI $aux = c $a; $a = $b; $b = $aux; echo $a, " ", $b; /* affiche32 */ }
H & H: Research and Training 148 / 218 Quelle solution ? Passage par ref´ erence´
Fonctions Passage par ref´ erence´ PHP
Passage par valeur
Les fonctions, par definition,´ rec¸oivent une copie du contenu de la variable c Elles ne manipulent pas la case de memoire´ de la variable envoyee´ On appelle ce concept passage par valeur c Achref EL MOUELHI
H & H: Research and Training 149 / 218 Fonctions Passage par ref´ erence´ PHP
Passage par valeur
Les fonctions, par definition,´ rec¸oivent une copie du contenu de la variable c Elles ne manipulent pas la case de memoire´ de la variable envoyee´ On appelle ce concept passage par valeur c Achref EL MOUELHI
Quelle solution ? Passage par ref´ erence´
H & H: Research and Training 149 / 218 Pour tester $x = 2; $y = 3; permuter($x, $y); echo $x, " ", $y; /* affiche32 */
Fonctions Passage par ref´ erence´ PHP Pour passer les parametres` par ref´ erence,´ on utilise & function permuter(&$a, &$b) { $aux = $a; $a = $b; c $b = $aux; }
c Achref EL MOUELHI
H & H: Research and Training 150 / 218 Fonctions Passage par ref´ erence´ PHP Pour passer les parametres` par ref´ erence,´ on utilise & function permuter(&$a, &$b) { $aux = $a; $a = $b; c $b = $aux; }
Pour testerc Achref EL MOUELHI $x = 2; $y = 3; permuter($x, $y); echo $x, " ", $y; /* affiche32 */
H & H: Research and Training 150 / 218 Considerons´ les deux fonctions suivantes function somme($a, $b) { return $a + $b; }
function produit($a, $b) { return $a * $b; }
Fonctions Fonction de retour (callback) PHP
Fonction de retour (ou de rappel, en anglais callback)
fonction appelee´ comme un parametre` d’une deuxieme` fonction tres` utilisee´ avec les fonctions asynchrones c
c Achref EL MOUELHI
H & H: Research and Training 151 / 218 Fonctions Fonction de retour (callback) PHP
Fonction de retour (ou de rappel, en anglais callback)
fonction appelee´ comme un parametre` d’une deuxieme` fonction tres` utilisee´ avec les fonctions asynchrones c
Considerons´ les deux fonctions suivantes function somme($a, $b) { return c$a +Achref $b; EL MOUELHI }
function produit($a, $b) { return $a * $b; }
H & H: Research and Training 151 / 218 Fonctions Fonction de retour (callback) PHP
Utilisons les fonctions prec´ edentes´ comme callback d’une fonction operation() c function operation($a, $b, $fonction) { echo ($fonction($a, $b)); } operation (3,Achref 5, ’somme’); EL MOUELHI /* affiche c8 */
H & H: Research and Training 152 / 218 Fonctions Fonction de retour (callback) PHP
On peut aussi utiliser la fonction is callable si un parametre` correspond a` une fonction de rappel function operation($a, $b, $fonction) { if(is_callable($fonction)) c echo ($fonction($a, $b)); else echo "erreur"; } Achref EL MOUELHI operation c (3, 5, ’somme’); /* affiche8 */
operation (3, 5, ’division’); /* affiche erreur */
H & H: Research and Training 153 / 218 Fonctions Fonction de retour (callback) PHP
On peut aussi executer´ la fonction callback en appelant la fonction PHP call user func function operation($a, $b, $fonction) { if(is_callable($fonction)) c echo call_user_func($fonction, $a, $b); else echo "erreur"; } Achref EL MOUELHI operation c (3, 5, ’somme’); /* affiche8 */
operation (3, 5, ’division’); /* affiche erreur */
H & H: Research and Training 154 / 218 Fonctions Fonction de retour (callback) PHP
Exercice c Modifier la fonction operation´ pour qu’elle puisse accepter deux fonctions callback ensuite retourner le resultat´ de la composition des deux. Par exemple : operationAchref (2, 3 , EL6, ’somme’, MOUELHI ’produit’) retourne 30 = (2 c + 3) * 6
H & H: Research and Training 155 / 218 Fonctions Fonction de retour (callback) PHP
Quelques fonctions pred´ efinies´ sur les tableaux utilisant les c callback array map(callback, tableau) array filter(tableau, callback) array reduce(tableau, callback, initial) c Achref EL MOUELHI
H & H: Research and Training 156 / 218 Fonctions Fonction de retour (callback) PHP
Exemple avec array map $nombres = array( 2, 5, c 8 );
function carre($x) { Achref EL MOUELHI return c $x * $x; }
print_r(array_map("carre", $nombres)); /* affiche Array ([0] => 4[1] => 25[2] => 64) */
H & H: Research and Training 157 / 218 Fonctions Fonction de retour (callback) PHP
Exemple avec array filter $nombres = array( 2, 5, c 8 );
function estPair($x) { Achref EL MOUELHI return c $x % 2 == 0; }
print_r(array_filter($nombres, "estPair")); /* affiche Array ([0] => 2[2] =>8) */
H & H: Research and Training 158 / 218 Fonctions Fonction de retour (callback) PHP
Exemple avec array reduce $nombres = array( 2, 5, c 8 );
function somme($x, $y) { Achref EL MOUELHI return c $x + $y; }
print_r(array_reduce($nombres, "somme", 0)); /* affiche 15 */
H & H: Research and Training 159 / 218 Fonctions Fonctions flech´ ees´ (Arrow functions) PHP
c Fonctions flech´ ees´ (Arrow functions) Disponible depuis PHP 7.4 Utilisant le mot-cle´ fn et l’operateur´ => c Achref EL MOUELHI
H & H: Research and Training 160 / 218 Fonctions Fonctions flech´ ees´ (Arrow functions) PHP
Exemple avec array map $nombres = array( 2, c 5, 8 );
$tab = array_mapAchref(fn($elt) EL MOUELHI => $elt * $elt, $nombres); print_r($tab); c /* affiche Array ([0] => 4[1] => 25[2] => 64) */
H & H: Research and Training 161 / 218 Fonctions Fonctions flech´ ees´ (Arrow functions) PHP
Exemple avec array filter $nombres = array( 2, c 5, 8 ); $tab = array_filterAchref($nombres, EL MOUELHI fn($elt) => $elt % 2 == 0); c print_r($tab); /* affiche Array ([0] => 2[2] =>8) */
H & H: Research and Training 162 / 218 Fonctions Fonctions flech´ ees´ (Arrow functions) PHP
Exemple avec array reduce $nombres = array( 2, c 5, 8 ); $tab = array_reduce($nombres,Achref EL MOUELHI fn ($elt, $res) => $elt + c $res, 0); print_r($tab); /* affiche 15 */
H & H: Research and Training 163 / 218 Syntaxe function nom_fonction([{type_variable $nom_variable }]) { // les instructions }
Fonctions Typage de parametres` PHP
Typage de parametres` Disponible depuis PHP 7 Permettant de filtrer les valeurs pour eviter´ a` nos fonctionsc un comportement indesirable´
c Achref EL MOUELHI
H & H: Research and Training 164 / 218 Fonctions Typage de parametres` PHP
Typage de parametres` Disponible depuis PHP 7 Permettant de filtrer les valeurs pour eviter´ a` nos fonctionsc un comportement indesirable´
Syntaxe Achref EL MOUELHI function c nom_fonction([{type_variable $nom_variable }]) { // les instructions }
H & H: Research and Training 164 / 218 Appeler une fonction $resultat = somme (1, 3); console.log($resultat); /* affiche4 */
Fonctions Typage de parametres` PHP
Exemple function somme(int $a, int $b) { return $a + $b; c }
c Achref EL MOUELHI
H & H: Research and Training 165 / 218 Fonctions Typage de parametres` PHP
Exemple function somme(int $a, int $b) { return $a + $b; c }
Appeler une fonctionAchref EL MOUELHI $resultat c = somme (1, 3); console.log($resultat); /* affiche4 */
H & H: Research and Training 165 / 218 Syntaxe function nom_fonction([les parametres]):` type { // les instructions }
Fonctions Typage de valeurs de retour PHP
Typage de valeurs de retour Disponible depuis PHP 7 Permettant de determiner´ le type de la variable recevant c la valeur de retour d’une fonction
c Achref EL MOUELHI
H & H: Research and Training 166 / 218 Fonctions Typage de valeurs de retour PHP
Typage de valeurs de retour Disponible depuis PHP 7 Permettant de determiner´ le type de la variable recevant c la valeur de retour d’une fonction
Syntaxe c Achref EL MOUELHI function nom_fonction([les parametres]):` type { // les instructions }
H & H: Research and Training 166 / 218 L’appel ne change pas $resultat = somme (1, 3); console.log($resultat); /* affiche4 */
Fonctions Typage de valeurs de retour PHP
Exemple function somme(int $a, int $b): int { return $a + $b; c }
c Achref EL MOUELHI
H & H: Research and Training 167 / 218 Fonctions Typage de valeurs de retour PHP
Exemple function somme(int $a, int $b): int { return $a + $b; c }
L’appel ne changeAchref pas EL MOUELHI $resultat c = somme (1, 3); console.log($resultat); /* affiche4 */
H & H: Research and Training 167 / 218 Fonctions Typage de valeurs de retour PHP
Types valides pour les fonctions
int
string
boolean c
float
array object (a` voirAchref dans un prochain EL chapitre) MOUELHI iterable c: parametre` iterable´ avec une structure iterative´ (for, foreach...)
callable : fonction callback
void : comme valeur de retour indique que la fonction n’a pas de valeur de retour, et comme parametre` indique que la fonction n’accepte pas de parametre.`
H & H: Research and Training 168 / 218 Comme le montre l’exemple suivant, PHP essayera de convertir les valeurs s’ils ne sont pas de type entier echo somme("1", 2.5); /* affiche3 */
Fonctions Typage strict PHP
Considerons´ la fonction somme suivante function somme(int $a, int $b): int { return $a + $b; c }
c Achref EL MOUELHI
H & H: Research and Training 169 / 218 Fonctions Typage strict PHP
Considerons´ la fonction somme suivante function somme(int $a, int $b): int { return $a + $b; c }
Comme le montreAchref l’exemple EL suivant, MOUELHI PHP essayera de convertir les valeurs c s’ils ne sont pas de type entier echo somme("1", 2.5); /* affiche3 */
H & H: Research and Training 169 / 218 Solution
Utiliser le mode strict.
Declarer´ le mode strict au tout debut´ du fichier
Appeler une fonction avec des parametres` qui ne sont pas entiers implique desormais´ une erreur fatale
echo somme("php", 2.5);
Fonctions Typage strict
Question
Comment interdire l’execution´ de la fonction si les types de valeurs ne correspondent pas aux types des parametres` de la fonction.
c
c Achref EL MOUELHI
H & H: Research and Training 170 / 218 Declarer´ le mode strict au tout debut´ du fichier
Appeler une fonction avec des parametres` qui ne sont pas entiers implique desormais´ une erreur fatale
echo somme("php", 2.5);
Fonctions Typage strict
Question
Comment interdire l’execution´ de la fonction si les types de valeurs ne correspondent pas aux types des parametres` de la fonction.
Solution c Utiliser le mode strict.
c Achref EL MOUELHI
H & H: Research and Training 170 / 218 Appeler une fonction avec des parametres` qui ne sont pas entiers implique desormais´ une erreur fatale
echo somme("php", 2.5);
Fonctions Typage strict
Question
Comment interdire l’execution´ de la fonction si les types de valeurs ne correspondent pas aux types des parametres` de la fonction.
Solution c Utiliser le mode strict.
Declarer´ le mode strict au tout debut´ du fichier
c
H & H: Research and Training 170 / 218 Fonctions Typage strict
Question
Comment interdire l’execution´ de la fonction si les types de valeurs ne correspondent pas aux types des parametres` de la fonction.
Solution c Utiliser le mode strict.
Declarer´ le mode strict au tout debut´ du fichier
c
Appeler une fonction avec des parametres` qui ne sont pas entiers implique desormais´ une erreur fatale
echo somme("php", 2.5);
H & H: Research and Training 170 / 218 Appeler cette fonction avec une valeur NULL implique une erreur fatale
dire_bonjour(null);
Explication
Les types null et string sont incompatibles.
Fonctions Type Nullable PHP Considerons´ la fonction dire bonjour suivante
function dire_bonjour(string $nom): void { if ($nom != null) { echo "bonjour $nom"; } else{ echo "bonjour doe"; c } }
c Achref EL MOUELHI
H & H: Research and Training 171 / 218 Explication
Les types null et string sont incompatibles.
Fonctions Type Nullable PHP Considerons´ la fonction dire bonjour suivante
function dire_bonjour(string $nom): void { if ($nom != null) { echo "bonjour $nom"; } else{ echo "bonjour doe"; c } }
Appeler cette fonction avec une valeur NULL implique une erreur fatale dire_bonjour(null); c Achref EL MOUELHI
H & H: Research and Training 171 / 218 Fonctions Type Nullable PHP Considerons´ la fonction dire bonjour suivante
function dire_bonjour(string $nom): void { if ($nom != null) { echo "bonjour $nom"; } else{ echo "bonjour doe"; c } }
Appeler cette fonction avec une valeur NULL implique une erreur fatale dire_bonjour(null); c Achref EL MOUELHI
Explication
Les types null et string sont incompatibles.
H & H: Research and Training 171 / 218 Solution En utilisant l’operateur´ ? pour rendre un type nullable
Fonctions Type Nullable PHP
Question c Comment autoriser la valeur null pour les autres types ?
c Achref EL MOUELHI
H & H: Research and Training 172 / 218 Fonctions Type Nullable PHP
Question c Comment autoriser la valeur null pour les autres types ?
Solution Achref EL MOUELHI En utilisant l’opc erateur´ ? pour rendre un type nullable
H & H: Research and Training 172 / 218 Appeler dire bonjour avec un parametre` NULL n’implique plus une erreur fatale dire_bonjour(null); /* affiche bonjour doe*/
Fonctions Type Nullable PHP
Modifions la fonction dire bonjour function dire_bonjour(?string $nom): void { if ($nom != null) { echo "bonjour $nom"; c } else{ echo "bonjour doe"; } } c Achref EL MOUELHI
H & H: Research and Training 173 / 218 Fonctions Type Nullable PHP
Modifions la fonction dire bonjour function dire_bonjour(?string $nom): void { if ($nom != null) { echo "bonjour $nom"; c } else{ echo "bonjour doe"; } } c Achref EL MOUELHI Appeler dire bonjour avec un parametre` NULL n’implique plus une erreur fatale dire_bonjour(null); /* affiche bonjour doe*/
H & H: Research and Training 173 / 218 Exemple d’une fonction qui retourne, a` chaque appel, un nombre pair different´ < 10 function generateur_pair(int $seuil) { for ($i = 0; $i <= $seuil; $i += 2) { yield $i; } }
Fonctions Fonctions gen´ eratrices´ PHP
Fonction gen´ eratrice´
une fonction PHP contenant un gen´ erateur´ yield qui retourne autant de valeursc que necessaire´
c Achref EL MOUELHI
H & H: Research and Training 174 / 218 Fonctions Fonctions gen´ eratrices´ PHP
Fonction gen´ eratrice´
une fonction PHP contenant un gen´ erateur´ yield qui retourne autant de valeursc que necessaire´
Exemple d’une fonction qui retourne, a` chaque appel, un nombre pair different´ < 10 Achref EL MOUELHI function generateur_pair(intc $seuil) { for ($i = 0; $i <= $seuil; $i += 2) { yield $i; } }
H & H: Research and Training 174 / 218 Fonctions Fonctions gen´ eratrices´ PHP
Pour appeler la fonction c foreach (generateur_pair(10) as $value) { echo "$value "; } /* affiche02468 10 */ c Achref EL MOUELHI
H & H: Research and Training 175 / 218 Pour appeler la fonction
foreach (carre(5) as $key => $value) { echo "le carre´ de $key est $value
"; }
/* affiche le carre´ de0 est0 le carre´ de1 est1 le carre´ de2 est4 le carre´ de3 est9 le carre´ de4 est 16 le carre´ de5 est 25 */
Fonctions Fonctions gen´ eratrices´
Une fonction gen´ eratrice´ peut retourner aussi un couple (cle,´ valeur)
function carre(int $seuil) { for ($i = 0; $i <= $seuil; $i++) { yield $i => $i * $i; } } c
c Achref EL MOUELHI
H & H: Research and Training 176 / 218 Fonctions Fonctions gen´ eratrices´
Une fonction gen´ eratrice´ peut retourner aussi un couple (cle,´ valeur)
function carre(int $seuil) { for ($i = 0; $i <= $seuil; $i++) { yield $i => $i * $i; } } c Pour appeler la fonction
foreach (carre(5) as $key => $value) { echo "le carre´ de $key est $value
"; }
/* affiche Achref EL MOUELHI le carre´ de 0c est0 le carre´ de1 est1 le carre´ de2 est4 le carre´ de3 est9 le carre´ de4 est 16 le carre´ de5 est 25 */
H & H: Research and Training 176 / 218 Fonctions Fonctions gen´ eratrices´ PHP
Etant´ donnee´ la chaˆınede caracteres` suivante $ma_chaine = "Hello les holoulos"; c
Exercice ´ Achref EL MOUELHI Ecrire une fonctionc gen´ eratrice´ qui retourne chaque fois une voyelle de la chaˆıne $ma chaine et sa position.
H & H: Research and Training 177 / 218 Fonctions Fonctions gen´ eratrices´ PHP
Correction function detecteur_voyelle(string $str) { $voyelles = "aeouiy"; c for ($i = 0; $i < strlen($str); $i++) { if(strpos($voyelles, $str[$i]) !== false) yield $i => $str[$i]; } } foreach (detecteur_voyelle($ma_chaine)c Achref EL MOUELHI as $key => $value) { echo "position $key : voyelle : $value
"; }
H & H: Research and Training 178 / 218 Fonctions Fonctions gen´ eratrices´ PHP
Etant´ donne´ le tableau a` deux dimension suivant $matrice = array( array(2, 3, 5, 7), array(1, 2, 5, 9, 5), c array(4, 2, 9, 3, 1, 5) );
Achref EL MOUELHI Exercice c
Ecrire´ une fonction gen´ eratrice´ qui retourne chaque fois les el´ ements´ pairs de la ligne suivante de la matrice.
H & H: Research and Training 179 / 218 Fonctions Fonctions gen´ eratrices´ PHP
Correction function estPair(int $x): bool { return $x % 2 == 0; } c function pair_ligne_matrice(array $tab) { foreach ($tab as $key => $value) { yield $key => array_filter($value, ’estPair’); } } Achref EL MOUELHI foreach (pair_ligne_matrice($matrice) c as $key => $value) { echo "position $key : el´ ement.s´ pair.s : " . implode ("-", $value) . "
"; }
H & H: Research and Training 180 / 218 Pour appeler la fonction foreach (generer_nombre() as $value) { echo "$value "; }
/* affiche0136 10 100 */
Fonctions Fonctions gen´ eratrices´ PHP
L’instruction yield from permet de retourner un nombre defini´ dans un tableau function generer_nombre() { yield 0; c yield from [1, 3, 6, 10]; yield 100; }
c Achref EL MOUELHI
H & H: Research and Training 181 / 218 Fonctions Fonctions gen´ eratrices´ PHP
L’instruction yield from permet de retourner un nombre defini´ dans un tableau function generer_nombre() { yield 0; c yield from [1, 3, 6, 10]; yield 100; }
Pour appelerc la fonctionAchref EL MOUELHI foreach (generer_nombre() as $value) { echo "$value "; }
/* affiche0136 10 100 */
H & H: Research and Training 181 / 218 Variables locales et globales PHP
En PHP, une fonction utilise ses variables locales function afficherNom() { c $nom = "doe"; echo $nom; }
$nom = "wick";Achref EL MOUELHI afficherNom(); c // affiche doe
H & H: Research and Training 182 / 218 Variables locales et globales PHP
Une fonction peut acceder´ aux variables definies´ dans le contexte global en utilisant la variable super-globale $GLOBALS (tableau associatif) c function afficherNom() { $nom = "doe"; echo $GLOBALS[’nom’]; } c Achref EL MOUELHI $nom = "wick"; afficherNom(); // affiche wick
H & H: Research and Training 183 / 218 Math PHP
c PHP Math API de PHP CORE contenant plusieurs fonctions permettant de realiser´ des operations´ mathematiques´ sur les nombres... c Achref EL MOUELHI
H & H: Research and Training 184 / 218 Math
Exemple de fonctions calculant l’arrondi echo round(2.1); /* affiche2 */
echo round(2.9); /* retourne3 */ c echo ceil(2.1); /* retourne3 */
echo ceil(2.9); /* retourne3 Achref*/ EL MOUELHI echo floor c(2.1); /* retourne2 */
echo floor(2.9); /* retourne2 */
H & H: Research and Training 185 / 218 Math Autres fonctions echo pow(2, 3); /* retourne8 */
echo sqrt(4); /* retourne2 */ c echo abs(-2); /* retourne2 */
echo min(0, 1, 4, 2, -4, -5); / retourne -5 / * Achref* EL MOUELHI echo max(0, c 1, 4, 2, -4, -5); /* retourne4 */
echo rand(10, 100); /* retourne un nombre ale´atoire compris entre 10 et 100 */
H & H: Research and Training 186 / 218 Math PHP
Exercice c Ecrire´ une fonction PHP qui permet de resoudre´ une equation´ de second degre.´ La fonction retourne un tableau vide si l’equation´ n’a pas de solution, un tableau a` deux valeurs si l’equation´ a deux solutions ou un tableau contenant une seule valeur sinon. c Achref EL MOUELHI
H & H: Research and Training 187 / 218 Date PHP
c PHP Date API de PHP CORE contenant plusieurs fonctions permettant de manipuler les dates... c Achref EL MOUELHI
H & H: Research and Training 188 / 218 Pour avoir une heure respectant le fuseau horaire de Paris date_default_timezone_set(’Europe/Paris’); echo date("d-m-Y H:i:s"); // affiche la date du jour avecl’heure du fuseau horaire choisi
Date PHP
Pour creer´ et retourner la date du jour (string) echo date("d-m-Y H:i:s"); // affiche la date du jour selon le format passe´ en parame`tre c
c Achref EL MOUELHI
H & H: Research and Training 189 / 218 Date PHP
Pour creer´ et retourner la date du jour (string) echo date("d-m-Y H:i:s"); // affiche la date du jour selon le format passe´ en parame`tre c
Pour avoir une heure respectant le fuseau horaire de Paris date_default_timezone_set(’Europe/Paris’);Achref EL MOUELHI echo date c("d-m-Y H:i:s"); // affiche la date du jour avecl’heure du fuseau horaire choisi
H & H: Research and Training 189 / 218 Date PHP
Quelques autres indices pour les dates
d : le jour du mois (de 01 a` 31)
D : une representation´ textuelle du jour (trois lettres) j : le jour du mois sans zero´ (de 1 a` 31) c w : une representation´ numerique´ du jour (0 pour dimanche, 6 pour samedi)
z : le jour de l’annee´ (de 0 a` 365)
F : une representation´ textuelle complete` du mois (January a` December) m : une representation´ Achref numerique´ EL du mois MOUELHI (de 01 a` 12) M : une repr cesentation´ textuelle courte du mois (trois lettres)
n : une representation´ numerique´ du mois, sans le zero´ au debut´ (de 1 a` 12)
Y : une representation´ numerique´ de l’annee´ (4 chiffres)
y : une representation´ numerique´ de l’annee´ (2 chiffres)
H & H: Research and Training 190 / 218 Date PHP
Quelques autres indices pour les heures
a : am ou pm en minuscule
A : AM ou PM en majuscule g : format d’heure de 1 a` 12 c G : format d’heure de 0 a` 23
h : format d’heure de 01 a` 12
H : format d’heure de 00 a` 23 i : minutes avecAchref un zero´ au debut´ EL (de 00 MOUELHIa` 59) s : secondes c avec un zero´ au debut´ (de 00 a` 59)
u : microsecondes (depuis PHP 5.2.2)
e : fuseau horaire (exemples : UTC, GMT, Atlantic/Azores)
T : abreviations´ du fuseau horaire (exemples : EST, MDT)
H & H: Research and Training 191 / 218 Pour creer´ une date a` partir d’une chaˆınede caracteres` $ma_date = date("d-m-Y H:i:s", strtotime("30-07-2015 10:30:11")); echo $ma_date; // affiche 30-07-2015 10:30:11
Pour gen´ erer´ des dates dans le futur ou dans le passe.´ $hier = mktime(0, 0, 0, date("m"), date("d") - 1, date("Y")); echo date("d-M-Y", $hier); // affiche 16-Mar-2020
$demain = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y")); echo date("d-M-Y", $demain); // affiche 18-Mar-2020
Date PHP Pour recup´ erer´ le mois actuel echo date("m");
c
c Achref EL MOUELHI
H & H: Research and Training 192 / 218 Pour gen´ erer´ des dates dans le futur ou dans le passe.´ $hier = mktime(0, 0, 0, date("m"), date("d") - 1, date("Y")); echo date("d-M-Y", $hier); // affiche 16-Mar-2020
$demain = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y")); echo date("d-M-Y", $demain); // affiche 18-Mar-2020
Date PHP Pour recup´ erer´ le mois actuel echo date("m");
Pour creer´ une date a` partir d’une chaˆınede caracteres` c $ma_date = date("d-m-Y H:i:s", strtotime("30-07-2015 10:30:11")); echo $ma_date; // affiche 30-07-2015 10:30:11
c Achref EL MOUELHI
H & H: Research and Training 192 / 218 Date PHP Pour recup´ erer´ le mois actuel echo date("m");
Pour creer´ une date a` partir d’une chaˆınede caracteres` c $ma_date = date("d-m-Y H:i:s", strtotime("30-07-2015 10:30:11")); echo $ma_date; // affiche 30-07-2015 10:30:11
Pour gen´ erer´ des datesAchref dans le futur EL ou dans MOUELHI le passe.´ $hier = mktime c(0, 0, 0, date("m"), date("d") - 1, date("Y")); echo date("d-M-Y", $hier); // affiche 16-Mar-2020
$demain = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y")); echo date("d-M-Y", $demain); // affiche 18-Mar-2020
H & H: Research and Training 192 / 218 Date PHP
Remarque c mktime retourne un timestamp (entier) correspondant au nombre de secondes ecoul´ ees´ depuis le debut´ de l’epoque´ UNIX (01/01/1970 00 :00 :00 GMT) et le temps passe´ en parametre.` time() retourne le timestamp UNIX actuel c Achref EL MOUELHI
H & H: Research and Training 193 / 218 Date PHP
Pour recup´ erer´ une date en franc¸ais, on utilise strftime qui accepte les options suivantes
%A : une representation´ textuelle complete` du jour %a : une representation´ textuelle courte du jour %e : le jour du mois (de 1 a` 31) %d : le jour du mois (de 01 a` 31) c %j : le jour de l’annee´ (de 1 a` 366) %u : une representation´ numerique´ du jour (de 1 pour lundi au 7 pour dimanche) %m : une representation´ numerique´ du mois (de 01 a` 12) %b : une representation´ textuelle courte du mois %B : une representation´ textuelle complete` du mois %Y : une reprcesentation´ Achref numerique´ EL de l’ann MOUELHIee´ (4 chiffres) %y : une representation´ numerique´ de l’annee´ (2 chiffres) %H : heure de 00 a` 23 %I : heure de 00 a` 12 %M : minute %S : seconde
H & H: Research and Training 194 / 218 Date PHP
Exemple c setlocale(LC_TIME, ’fr_FR’); $now = mktime(8, 20, 50, date("m"), date("d"), date( "Y")); echo strftime("%A %e %B %y %H:%M:%S", $now); // affiche mardi 17 mars 20 08:20:50 c Achref EL MOUELHI
H & H: Research and Training 195 / 218 Date PHP
Exemple avec checkdate qui retourne true si la date passee´ en parametre` est correcte, false sinon. var_dump(checkdate(1, 31, -400)); /* affiche false */ c
var_dump(checkdate(2, 29, 2019)); /* affiche false */ var_dump(checkdateAchref(2, EL 29, MOUELHI 2020)); /* affiche c true */
var_dump(checkdate(30, 7, 2004)); /* affiche false */
H & H: Research and Training 196 / 218 Date PHP
Autres fonctions pour les dates (DateTime)
date create() : cree´ et retourne une DateTime en utilisant une date sous forme d’une chaˆıne de caractere` et un fuseau horaire c date modify() : retourne une DateTime modifiee´ en fonction d’un texte exprime´ en anglais date format() : retourne une chaˆıne de caractere` construite a` partir d’une DateTime et un format Achref EL MOUELHI date diff()c : retourne la difference´ entre deux dates date timestamp get() : retourne le timestamp d’une DataTime passee´ en parametre` ...
H & H: Research and Training 197 / 218 Pour avoir l’heure exacte, il faut preciser´ le fuseau horaire $date = date_create("", timezone_open("Europe/Paris")); echo date_format($date,"d-m-Y H:i:s"); // affiche les date et heure exactes
On peut aussi utiliser date create pour creer´ une DateTime d’une autre date $date = date_create("2018-07-30 21:30:10");// obligatoirement anne´e-mois-jour echo date_format($date, "d-m-Y H:i:s"); // affiche 30-07-2018 21:30:10
Date PHP
Exemple avec date create et date format $date = date_create(); echo date_format($date,"d-m-Y H:i:s"); // affiche la date du jour avec und e´calaged’une heure c
c Achref EL MOUELHI
H & H: Research and Training 198 / 218 On peut aussi utiliser date create pour creer´ une DateTime d’une autre date $date = date_create("2018-07-30 21:30:10");// obligatoirement anne´e-mois-jour echo date_format($date, "d-m-Y H:i:s"); // affiche 30-07-2018 21:30:10
Date PHP
Exemple avec date create et date format $date = date_create(); echo date_format($date,"d-m-Y H:i:s"); // affiche la date du jour avec und e´calaged’une heure c Pour avoir l’heure exacte, il faut preciser´ le fuseau horaire $date = date_create("", timezone_open("Europe/Paris")); echo date_format($date,"d-m-Y H:i:s"); // affiche les date et heure exactes c Achref EL MOUELHI
H & H: Research and Training 198 / 218 Date PHP
Exemple avec date create et date format $date = date_create(); echo date_format($date,"d-m-Y H:i:s"); // affiche la date du jour avec und e´calaged’une heure c Pour avoir l’heure exacte, il faut preciser´ le fuseau horaire $date = date_create("", timezone_open("Europe/Paris")); echo date_format($date,"d-m-Y H:i:s"); // affiche les date et heure exactes c Achref EL MOUELHI On peut aussi utiliser date create pour creer´ une DateTime d’une autre date $date = date_create("2018-07-30 21:30:10");// obligatoirement anne´e-mois-jour echo date_format($date, "d-m-Y H:i:s"); // affiche 30-07-2018 21:30:10
H & H: Research and Training 198 / 218 Exemples avec date timestamp get $date = date_create("2018-01-01"); echo date_timestamp_get($date); // affiche 1514764800
Date PHP
Exemple avec date diff $date1 = date_create("2017-03-29"); $date2 = date_create("2017-07-30"); $diff = date_diff($date1, $date2); c echo ($diff->days); /* affiche 123 */
c Achref EL MOUELHI
H & H: Research and Training 199 / 218 Date PHP
Exemple avec date diff $date1 = date_create("2017-03-29"); $date2 = date_create("2017-07-30"); $diff = date_diff($date1, $date2); c echo ($diff->days); /* affiche 123 */ Achref EL MOUELHI Exemples avecc date timestamp get $date = date_create("2018-01-01"); echo date_timestamp_get($date); // affiche 1514764800
H & H: Research and Training 199 / 218 Date
Exemple avec date modify $date=date_create("2018-01-01"); echo date_format($date,"d-m-Y H:i:s") . "
"; /* affiche 01-01-2018 00:00:00 */
date_modify($date,"+15 days"); echo date_format($date,"d-m-Y H:i:s") . "
"; c /* affiche 16-01-2018 00:00:00 */
date_modify($date,"-1 week"); echo date_format($date,"d-m-Y H:i:s") . "
"; /* affiche 09-01-2018 00:00:00 */ date_modify($date,"+3Achref months"); EL MOUELHI echo date_format($date,"d-m-Y c H:i:s") . "
"; /* affiche 09-04-2018 00:00:00 */
date_modify($date,"24 hours 1 minute"); echo date_format($date,"d-m-Y H:i:s") . "
"; /* affiche 10-04-2018 00:01:00 */
H & H: Research and Training 200 / 218 L’equivalent´ en programmation procedurale´ du code prec´ edent´ $date = date_create(’2008-07-30’); echo date_format($date, ’Y-m-d H:i:s’); // affiche 30-07-2008 00:00:00
Date PHP
On peut aussi creer´ une DateTime en utilisant par la classe $date = new DateTime(’2008-07-30’); echo $date->format(’d-m-Y H:i:s’); c // affiche 30-07-2008 00:00:00
c Achref EL MOUELHI
H & H: Research and Training 201 / 218 Date PHP
On peut aussi creer´ une DateTime en utilisant par la classe $date = new DateTime(’2008-07-30’); echo $date->format(’d-m-Y H:i:s’); c // affiche 30-07-2008 00:00:00
L’equivalent´ enAchref programmation EL proc MOUELHIedurale´ du code prec´ edent´ $date = date_create(’2008-07-30’);c echo date_format($date, ’Y-m-d H:i:s’); // affiche 30-07-2008 00:00:00
H & H: Research and Training 201 / 218 Ou aussi $date1 = date_create("2017-03-29"); $date2 = new DateTime(’2017-07-30’); $diff = $date2->diff($date1);
echo ($diff->days); /* affiche 123 */
Date PHP On peut utiliser date diff pour calculer la difference´ entre deux DateTime cre´ee´ de deux manieres` differentes´ $date1 = date_create("2017-03-29"); $date2 = new DateTime(’2017-07-30’); $diff = date_diff($date1, $date2); c echo ($diff->days); /* affiche 123 */
c Achref EL MOUELHI
H & H: Research and Training 202 / 218 Date PHP On peut utiliser date diff pour calculer la difference´ entre deux DateTime cre´ee´ de deux manieres` differentes´ $date1 = date_create("2017-03-29"); $date2 = new DateTime(’2017-07-30’); $diff = date_diff($date1, $date2); c echo ($diff->days); /* affiche 123 */
Ou aussi Achref EL MOUELHI $date1 = date_create("2017-03-29"); c $date2 = new DateTime(’2017-07-30’); $diff = $date2->diff($date1);
echo ($diff->days); /* affiche 123 */
H & H: Research and Training 202 / 218 Exercice
Ecrivez´ un script PHP qui permet de verifier´ si les trois variables prec´ edentes´ forment une date valide. Si oui, le script affiche la difference´ en nombre de jours entre cette date et la date courante.
Date PHP
Etant´ donnees´ les trois variables suivantes $mois = 12; $jour = 31; c $annee = 2019;
c Achref EL MOUELHI
H & H: Research and Training 203 / 218 Date PHP
Etant´ donnees´ les trois variables suivantes $mois = 12; $jour = 31; c $annee = 2019;
Exercice c Achref EL MOUELHI Ecrivez´ un script PHP qui permet de verifier´ si les trois variables prec´ edentes´ forment une date valide. Si oui, le script affiche la difference´ en nombre de jours entre cette date et la date courante.
H & H: Research and Training 203 / 218 Date PHP
Correction $mois = $_GET[’mois’] ?? 12; $jour = $_GET[’jour’] ?? 31; c $annee = $_GET[’annee’] ?? 2019; if(checkdate($mois, $jour, $annee)) { $date1 = date_create("$annee-$mois-$jour"); $date2 = new DateTime(); $diff = $date2->diff($date1); echo c$diff->days;Achref EL MOUELHI } else{ echo "date incorrecte"; }
H & H: Research and Training 204 / 218 Ou la version objet $motif = "d/m/Y H:i:s"; $date = DateTime::createFromFormat($motif ,’ 10/04/2020 08:15:00’);
Date PHP
La fonction date create accepte un seul format de date. On peut utiliser la fonction date create from format qui accepte un format personnalise´ $motif = "d/m/Y H:i:s"; c $date = date_create_from_format($motif ,’10/04/2020 08:15:00’);
c Achref EL MOUELHI
H & H: Research and Training 205 / 218 Date PHP
La fonction date create accepte un seul format de date. On peut utiliser la fonction date create from format qui accepte un format personnalise´ $motif = "d/m/Y H:i:s"; c $date = date_create_from_format($motif ,’10/04/2020 08:15:00’);
Achref EL MOUELHI Ou la version c objet $motif = "d/m/Y H:i:s"; $date = DateTime::createFromFormat($motif ,’ 10/04/2020 08:15:00’);
H & H: Research and Training 205 / 218 3 etapes´ pour la manipulation de fichiers en PHP Ouverture Utilisation : ecriture´ ou lecture Fermeture
Fichiers PHP
Les fichiers Utilises´ pour stocker et/ou echanger´ les donnees´ Pouvant etreˆ en ecriture´ ou en lecture c
c Achref EL MOUELHI
H & H: Research and Training 206 / 218 Fichiers PHP
Les fichiers Utilises´ pour stocker et/ou echanger´ les donnees´ Pouvant etreˆ en ecriture´ ou en lecture c
3 etapes´ pour la manipulation de fichiers en PHP Achref EL MOUELHI Ouverture c Utilisation : ecriture´ ou lecture Fermeture
H & H: Research and Training 206 / 218 Quatre modes d’ouverture
a : ouvre le fichier, s’il existe, en ecriture´ seule place le pointeur a` la fin du fichier. S’il n’existe pas,il sera automatiquement cre´e.´
a+ : ouvre le fichier en lecture et ecriture.´ Si le fichier n’existe pas, il sera automatiquement cre´e.´ S’il existe, le texte sera ajoute´ a` la fin.
r : ouvre le fichier en lecture seule et place le pointeur au debut´ du fichier. Si le fichier n’existe pas, il ne sera pas cre´e.´
r+ : ouvre le fichier en lecture et ecriture,´ et place le pointeur au debut´ du fichier. Si le fichier n’existe pas, il ne sera pas cre´e.´
...
Fichiers Ouverture PHP
Syntaxe $mon_logique = fopen (nom_physique, mode_ouverture);
c
c Achref EL MOUELHI
H & H: Research and Training 207 / 218 Fichiers Ouverture PHP
Syntaxe $mon_logique = fopen (nom_physique, mode_ouverture);
Quatre modes d’ouverture c a : ouvre le fichier, s’il existe, en ecriture´ seule place le pointeur a` la fin du fichier. S’il n’existe pas,il sera automatiquement cre´e.´
a+ : ouvre le fichier en lecture et ecriture.´ Si le fichier n’existe pas, il sera automatiquementAchref cre´e.´ S’il existe, EL le MOUELHI texte sera ajoute´ a` la fin. r : ouvre c le fichier en lecture seule et place le pointeur au debut´ du fichier. Si le fichier n’existe pas, il ne sera pas cre´e.´
r+ : ouvre le fichier en lecture et ecriture,´ et place le pointeur au debut´ du fichier. Si le fichier n’existe pas, il ne sera pas cre´e.´
...
H & H: Research and Training 207 / 218 Fichiers Fermeture PHP
c Syntaxe fclose (nom_fichier);
c Achref EL MOUELHI
H & H: Research and Training 208 / 218 Fichiers Fermeture
Quelques fonctions sur les fichiers
file exists : retourne true si le fichier passe´ en parametre` existe, false sinon.
is dir : retourne true si le parametre` correspond a` un dossier, false sinon.
is file : retourne true si le parametre` correspond a` un fichier, false sinon. feof : retourne true si le pointeur est a` la fin du fichier ou si une erreur c survient, false sinon.
unlink : permet de supprimer un fichier. Elle retourne true en cas de succes,` false sinon.
copy : permet de copier un fichier. Elle retourne true en cas de succes,` false sinon. rename :c permetAchref de renommer un EL dossier MOUELHI ou fichier. glob : retourne un tableau contenant les noms de dossiers et fichiers respectant un motif passe´ en parametre.`
filesize : retourne la taille d’un fichier (nombre d’octets)
...
H & H: Research and Training 209 / 218 Fichiers Fermeture PHP
Exemple c if (file_exists("file.txt")) { echo "fichier trouve";´ } else{ echo "fichier non trouve";´ } c Achref EL MOUELHI
H & H: Research and Training 210 / 218 Fichiers Utilisation PHP
Quelques fonctions d’ecriture´
fwrite : ecrit´ une chaˆıne de caractere` dans un fichier et retourne le nombre d’octets ecrits,´ ou false si une erreur survient. c fputs : alias de fwrite file put contents = fopen + fwrite + fclose : Si le fichier n’existe pas, il sera cre´e.´ Sinon, le fichier existant sera ecras´ e.´ Ajoutezc uneAchref constante FILE ELAPPEND MOUELHIcomme troisieme` parametre` pour ajouter les donnees´ au fichier au lieu de l’ecraser..´ ...
H & H: Research and Training 211 / 218 Pour refaire la memeˆ chose avec file put contents if(file_exists("file.txt")) { $nbr_octet = file_put_contents("file.txt", "bonjour"); echo $nbr_octet; } else{ echo "fichier non trouve";´ }
Fichiers Utilisation PHP
Exemple d’ecriture´ dans un fichier if(file_exists("file.txt")) { $mon_fichier = fopen ("file.txt","a"); $nbr_octet = fwrite($mon_fichier, "bonjour"); echo $nbr_octet; fclose ($mon_fichier); c } else{ echo "fichier non trouve";´ }
c Achref EL MOUELHI
H & H: Research and Training 212 / 218 Fichiers Utilisation PHP
Exemple d’ecriture´ dans un fichier if(file_exists("file.txt")) { $mon_fichier = fopen ("file.txt","a"); $nbr_octet = fwrite($mon_fichier, "bonjour"); echo $nbr_octet; fclose ($mon_fichier); c } else{ echo "fichier non trouve";´ }
Pour refaire la memeˆ Achref chose avec ELfile put MOUELHIcontents if(file_exists c ("file.txt")) { $nbr_octet = file_put_contents("file.txt", "bonjour"); echo $nbr_octet; } else{ echo "fichier non trouve";´ }
H & H: Research and Training 212 / 218 Fichiers Utilisation PHP
Quelques fonctions de lecture
file get contents : retourne tout le contenu d’un fichier dans une chaˆıne de caracteres.` c fgets : retourne la ligne courante d’un fichier dans une chaˆıne de caracteres.`
fgetss : retourne la ligne courante du fichier et elimine´ les balises HTML.
fgetc : retourne un caractere` d’un fichier. file : retourne c Achref un fichier sous EL forme MOUELHI d’un tableau de chaˆınes de caracteres.` filemtime : retourne la date de la derniere` modification du fichier.
...
H & H: Research and Training 213 / 218 Pour refaire la memeˆ chose avec file get contents if(file_exists("file.txt")) { $contenu = file_get_contents("file.txt"); echo $contenu; } else{ echo "fichier non trouve";´ }
Fichiers Utilisation PHP
Exemple de lecture if(file_exists("file.txt")) { $mon_fichier = fopen ("file.txt","r"); $contenu = fgets($mon_fichier); echo ($contenu); fclose ($mon_fichier); c } else{ echo "fichier non trouve";´ }
c Achref EL MOUELHI
H & H: Research and Training 214 / 218 Fichiers Utilisation PHP
Exemple de lecture if(file_exists("file.txt")) { $mon_fichier = fopen ("file.txt","r"); $contenu = fgets($mon_fichier); echo ($contenu); fclose ($mon_fichier); c } else{ echo "fichier non trouve";´ }
Pour refaire la memeˆ Achref chose avec ELfile get MOUELHIcontents if(file_exists c ("file.txt")) { $contenu = file_get_contents("file.txt"); echo $contenu; } else{ echo "fichier non trouve";´ }
H & H: Research and Training 214 / 218 Fichiers Utilisation PHP
c Exercice
Ecrivez´ un script PHP qui permet de lire tout le contenu d’un fichier en utilisant fgets. c Achref EL MOUELHI
H & H: Research and Training 215 / 218 Deuxieme` solution
if(file_exists("file.txt")) { $mon_fichier = fopen("file.txt", "r"); while(!feof($mon_fichier)) { echo fgets($mon_fichier) . "
"; } fclose($mon_fichier); } else{ echo "fichier non trouve";´ }
Fichiers Utilisation Premiere` solution
if(file_exists("file.txt")) { $mon_fichier = fopen("file.txt", "r"); while ($contenu = fgets($mon_fichier)) { echo $contenu . ’
’; } fclose($mon_fichier); } else{ echo "fichier non trouve";´ c }
c Achref EL MOUELHI
H & H: Research and Training 216 / 218 Fichiers Utilisation Premiere` solution
if(file_exists("file.txt")) { $mon_fichier = fopen("file.txt", "r"); while ($contenu = fgets($mon_fichier)) { echo $contenu . ’
’; } fclose($mon_fichier); } else{ echo "fichier non trouve";´ c }
Deuxieme` solution
if(file_exists("file.txt")) { $mon_fichierAchref = fopen("file.txt", EL MOUELHI "r"); while(! feofc ($mon_fichier)) { echo fgets($mon_fichier) . "
"; } fclose($mon_fichier); } else{ echo "fichier non trouve";´ }
H & H: Research and Training 216 / 218 Exercice
Ecrivez´ un script PHP qui permet de calculer la moyenne des valeurs definies´ dans file.txt.
Fichiers Utilisation PHP
Etant´ donne´ le fichier file.txt ayant le contenu suivant 15 12 17 c 13 10 16
c Achref EL MOUELHI
H & H: Research and Training 217 / 218 Fichiers Utilisation PHP
Etant´ donne´ le fichier file.txt ayant le contenu suivant 15 12 17 c 13 10 16
c Achref EL MOUELHI Exercice
Ecrivez´ un script PHP qui permet de calculer la moyenne des valeurs definies´ dans file.txt.
H & H: Research and Training 217 / 218 Fichiers Utilisation PHP
Correction c if(file_exists("file.txt")) { $contenu = file("file.txt"); echo max($contenu); } else{ echo "fichier non trouve";´ } c Achref EL MOUELHI
H & H: Research and Training 218 / 218