Data structures
Variables
- Prefixed by
$
- Alphanumeric characters and
_
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<?php $hello_en = 'Hello world'; $hello_fr = 'Salut le monde'; $lang = $hello_fr; $retour = '<br />'; echo $lang; $toto = 1; echo $toto; echo $retour; $toto = 1.5; echo $toto; echo $retour; $toto = 'Bonjour'; echo $toto; echo $retour; ?> |
Arrays
- Lists that map values to keys
- Vector array: simple list of values
array('stingray', 'telescope');
array(0, 1);
- Hashtable array: associative list
array('red' => 'cherries, 'green' => 'apple');
Si nous voulons afficher le 1er élément de notre tableau :
|
$stuff = array('stingray', 'telescope'); print $stuff[0]; |
…nous affichera « stingray ».
|
$fruit = array( 'red' => 'cherries', 'green' => 'apple', ); print $fruit['green']; |
…nous affichera « apple ».
|
<?php $langue = array( 'Hello world!', 'Bonjour le monde!' ); $affiche = 1; echo $langue[$affiche]; ?> |
ou:
|
<?php $langue = array( 'en'=>'Hello world!', 'fr'=>'Bonjour le monde!' ); $affiche = 'fr'; echo $langue[$affiche]; ?> |
ou:
|
<?php $langue = array(); $langue['en'] = 'Hello world!'; $langue['fr'] = 'Bonjour le monde!'; $affiche = 'fr'; echo $langue[$affiche]; ?> |
…nous afficheront tous « Bonjour le monde! ».
Fonction print_r() pour afficher l’ensemble des valeurs contenues dans un tableau Array
|
$toto = array('tab1','tab2'); print_r($toto); |
…nous affichera Array ( [0] => tab1 [1] => tab2 )
Objects
- Properties
|
$robot->color $robot->material $robot->finish |
- Methods
Object properties

|
print $node->links['blog_usernames_blog']['href']; |
…nous affichera « blog/1 ».
Les constantes
Les constantes sont des valeurs qui, une fois qu’elles ont été définies dans le code, ne peuvent plus être modifiées. C’est intéressant pour définir des accès à une BDD ou les infos sont les mêmes sur toutes les pages.
|
<?php define('AFFICHE','en'); $langue = array( 'en'=>'I like PHP.', 'fr'=>'<p style="color: blue;">J\'aime PHP!</p>' ); ?> <?php echo $langue[AFFICHE]; ?> |
…nous affichera « I like PHP. ».
Si on essaye de redéfinir la valeur de la constante:
|
<?php define('AFFICHE','en'); $langue = array( 'en'=>'I like PHP.', 'fr'=>'<p style="color: blue;">J\'aime PHP!</p>' ); ?> <?php AFFICHE = 'fr'; echo $langue[AFFICHE]; ?> |
…on obtient une erreur ( ! ) Parse error: syntax error, unexpected ‘=’ in C:\wamp64\www\test\index.php on line 10
car une constante ne peut pas être redéfinie.
Les opérateurs
L’opérateur de concaténation
L’opérateur point .
.
|
<?php $retour = '<br />'; ?> <?php echo 'hello world'.$retour.'Bonjour le monde'; ?> |
ou:
|
<?php echo "hello world$retour Bonjour le monde"; ?> |
On obtient : hello world<br />Bonjour le monde
. A noter: l’utilisation de guillemets ""
par rapport aux simples quotes ''
permet une interprétation des variables sans concaténation.
|
<?php $a = 1; $b = 2; echo $a.$b; ?> |
On obtient : « 12 ».
On ne peut pas afficher un echo
d’un tableau. Pour cela, il faut utiliser print_r
.
|
<?php $a = array(1,2); $b = array(3,4); print_r($a).print_r($b); ?> |
…nous affiche : « Array ( [0] => 1 [1] => 2 ) Array ( [0] => 3 [1] => 4 ) ».
Les opérateurs arithmétiques
Vont permettre d’effectuer des calculs sur les valeurs de différentes variables. Ils sont au nombre de 5 :
|
<?php echo 1 + 2; echo 3 - 1; echo 5 * 4; echo 3 / 2; echo 3 % 6; ?> |
On obtient : « 1 ». La représentation de toto en valeur numérique est « 0 ».
|
<?php echo 1 + 'to5to'; ?> |
On obtient : « 1 ».
|
<?php echo 1 + '6toto'; ?> |
On obtient : « 7 ».
|
<?php echo 1 + '6to5to'; ?> |
On obtient : « 7 ».
var_dump()
Renvoie une type de variable et son contenu.
|
<?php var_dump(array(1,2) + array (3,4,5)); ?> |
On obtient :
C:\wamp64\www\test\index.php:6:
array (size=3)
0 => int 1
1 => int 2
2 => int 5
On a conservé les valeurs de rang définies dans le premier tableau et on a ajouté la nouvelle valeur de rang définie dans le second tableau.
|
<?php var_dump(array (3,4,5) + array(1,2)); ?> |
C:\wamp64\www\test\index.php:6:
array (size=3)
0 => int 3
1 => int 4
2 => int 5
On obtient le tableau d’origine puisqu’il n’y a aucune valeur à compléter dans le deuxième tableau.
Les opérateurs d’affectation
vont permettre d’affecter une valeu à une variable ou de redéfinir la valeur d’une variable.
|
<?php $a = 1; $b = $a; $b = $b + 1; echo $a.' / '.$b; ?> |
ou:
|
<?php $a = 1; $b = $a; $b += 1; echo $a.' /'.$b; ?> |
va afficher : « 1 / 2 ».
|
<?php $a = 1; $b = $a; $b .= 1; echo $a.' /'.$b; ?> |
va afficher : « 1 / 11 ».
|
<?php $a = 1; $b = $a; $b .= 'toto'; echo $a.' /'.$b; ?> |
va afficher : « 1 / 1toto ».
Post-incrémentation et pré-incrémentation
Incrémentation/décrémentation d’une unité est très utilisé en PHP, en particulier pour la gestion des boucles.
Post-incrémentation
|
<?php $a = 1; $b = $a; $b++; // post-incrémentation echo $a.' /'.$b; ?> |
va afficher : « 1 / 2 ».
Pré-incrémentation)
|
<?php <?php $a = 1; echo ++$a; // pré-incrémentation echo $retour; echo $a; ?> ?> |
va générer : « 2
2″.
Les opérateurs de comparaison et les conditions
|
<?php $a = 1; $b = 1; if($a == $b) { echo 'a est égal à b'; } else { echo 'a est différent de b'; } ?> |
On obtient : « a est égal à b ».
|
<?php $a = 1; $b = '1'; if($a == $b) { echo 'a est égal à b'; } else { echo 'a est différent de b'; } ?> |
On obtient aussi : « a est égal à b ». PHP va essayer de rendre les types compatibles et de faire la comparaison sur des types compatibles.
|
<?php $a = 0; $b = 'toto'; if($a == $b) { echo 'a est égal à b'; } else { echo 'a est différent de b'; } ?> |
On obtient aussi : « a est égal à b » car pour PHP, ‘toto’ est égal à 0.
Comparer non seulement la valeur des variables mais aussi leurs types
Rajouter un troisième signe =
:
|
<?php $a = 1; $b = '1'; if($a === $b) { echo 'a est égal à b'; } else { echo 'a est différent de b'; } ?> |
On obtient : « a est différent de b ».
|
<?php $a = 0; $b = 'toto'; if($a <> $b) { echo 'a est égal à b'; } else { echo 'a est différent de b'; } ?> |
On obtient : « a est différent de b ».
|
<?php $a = 0; $b = 1; if($a < $b) { echo 'a est inférieur à b'; } else { echo 'a est supérieur ou égal à b'; } ?> |
on obtient : « a est inférieur à b ».
|
<?php $a = 2; $b = 1; if($a >= $b) { echo 'a est supérieur ou égal à b'; } else { echo 'a est inférieur à b'; } ?> |
On obtient: « a est supérieur ou égal à b ».
|
<?php $a = 'c'; $b = 'b'; if($a >= $b) { echo 'c est supérieur ou égal à b'; } else { echo 'c est inférieur à b'; } ?> <p>On obtient: "a est supérieur ou égal à b".</p> |
|
<?php $a = 'A'; $b = 'a'; if($a == $b) { echo 'a est égal à b'; } else { echo 'a est différent de b'; } ?> |
on obtient: « a est différent de b ».
La non égalité avec !=
Tester la non égalité sans prendre en compte le type :
|
<?php $a = 1; $b = '1'; if($a != $b) { echo 'a est différent de b'; } else { echo 'a est égal à b'; } ?> |
nous donne: « a est égal à b »
Tester la non égalité en prenant en compte le type. On rajoute un caractère =
:
|
<?php $a = 1; $b = '1'; if($a !== $b) { echo 'a est différent de b'; } else { echo 'a est égal à b'; } ?> |
nous donne: « a est différent de b »
Comparer des nombres décimaux avec la fonction bccomp()
|
<?php $a = 0.7; $b = 0.7; if($a == $b) { echo 'a est égal b'; } else { echo 'a et b sont différents'; } ?> |
nous donne: « a est égal b ».
|
<?php $a = 0.8; $b = 0.7 + 0.1; if($a == $b) { echo 'a est égal b'; } else { echo 'a et b sont différents'; } ?> |
nous donne: « a et b sont différents ».
|
<?php $a = 0.8; $b = 0.7 + 0.1; if(bccomp($a,$b) == 0) { echo 'a est égal b'; } else { echo 'a et b sont différents'; } ?> |
nous donne: « a est égal b ».
Les opérateurs logiques ou booléens
Un booléen est un type particulier en informatique, dont la valeur ne peut être que vrai ou faux.
|
<?php if('Dieu existe' == true) { echo 'Je pense que Dieu existe'; } else { echo 'Je pense que Dieu n\'existe pas'; } ?> |
nous affiche: « Je pense que Dieu existe ».
|
<?php if('' == true) { echo 'Je pense que Dieu existe'; } else { echo 'Je pense que Dieu n\'existe pas'; } ?> |
nous affiche: « Je pense que Dieu n’existe pas ».
L’opérateur de comparaison et (&&
et and
)
|
<?php $a = true; $b = false; if($a && $b) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
nous affiche: « Condition non vérifiée ».
|
<?php $a = true; $b = false; if($a && $a) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
nous affiche: « Condition vérifiée ».
|
<?php $a = true; $b = false; if($b && $b) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
nous affiche: « Condition non vérifiée ». Pour que une expression et une autre soient vérifiées, il faut que les deux expressions aient un équivalent booléen égal à vrai.
|
<?php $a = true; $b = false; if('toto' && 3) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
nous affiche: « Condition vérifiée », puisque l’équivalent d’une chaîne de caractères non vide est vrai et que l’équivalent booléen d’un nombre non nul est vrai.
|
<?php $a = true; $b = false; if('toto' && 0) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
nous affiche: « Condition non vérifiée », puisque l’équivalent booléen d’un nombre nul est false.
|
<?php $a = true; $b = false; if($a and $a) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
nous affiche: « Condition vérifiée ».
Attention: &&
et and
ne donnent pas toujours les mêmes résultats:
|
<?php $a = true; $b = false; $c = $a && $b; if($c) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
on obtient: « Condition non vérifiée ».
|
<?php $a = true; $b = false; $c = $a and $b; if($c) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
on obtient: « Condition vérifiée ».
Le and
correspondrait à une notation ($c = $a) and $b.
Le &&&
correspondrait à une notation $c = ($a && $b).
L’opérateur de comparaison ou (||
et or
)
Attention au cas particulier xor
qui est une expression exclusive : il faut uniquement que l’un des booléens soit vrai.
|
<?php $a = true; $b = false; $c = $a && $b; if($a xor $b) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
On obtient: « Condition vérifiée ».
L’opérateur de négation (!
)
Va renvoyer l’inverse de la valeur donné (not false va donner true).
|
<?php $a = true; $b = false; $c = $a && $b; if(!$b) { echo 'Condition vérifiée'; } else { echo 'Condition non vérifiée'; } ?> |
Va donner: « Condition vérifiée ».
Conditionals
if/else
|
if ($a == $b) { print "It's equal!"; } else if ($a < $b) { print "It's smaller."; } else { print "Who knows"; } |
on obtient: « a est égal à b ».
Variations on a theme: « colon » notation

|
if ($a === $b) : print "It's equal!"; endif; print ($a == $b) ? "It's equal!" : ''; |
Si la valeur de $a est égale à la valeur de $b, afficher la mention « It’s equal »; autrement, ne rien imprimer.
L’intérêt de cette syntaxe réside dans le fait qu’on peut y insérer du markup HTML.
Switch statement
|
switch ($time_of_day) { case 'morning': print "Eat breakfast."; break; case 'afternoon': print "Lunch time."; break; default: print "Zzzzzzzz"; } |
Multiple statements could match. That’s why we use break;
.
Loops
While
|
$i = 0; while ($i < 10) { print "She loves you"; $i++; } |
Commence à 0. Va looper jusqu’à atteindre 10, puis s’arrêtera. « She loves you » sera affiché 10 fois de suite.
for
|
for ($i = 0; $i < 10; $i++) { print "She loves you"; } |
Pareil que while. Commence à 0. Va looper jusqu’à atteindre 10, puis s’arrêtera. « She loves you » sera affiché 10 fois de suite.
foreach
|
foreach ($stuff as $item) { print $item; } |
…nous affichera :
stingraytelescope
|
foreach ($stuff as $item) { print $item .'<br />'; } |
…nous affichera :
stingray
telescope
Functions
|
function my_function($a, $b) { $c = $a + $b; $a = $a +1; return $c; } |
- Encapsulate frequently repeated tasks
- Accept parameters as input ($a et $b dans notre exemple)
- Give a return value as output ($c)
|
$x = 4; print my_function($x, 6); |
…nous affiche « 10 ».
…nous affiche « 4 ».
Pass parameters by reference
Un « & » avant le paramètre « $a »:
|
function my_function(&$a, $b) { $c = $a + $b; $a = $a +1; return $c; } |
|
$x = 4; print my_function($x, 6); |
…nous affiche toujours « 10 ».
…nous affiche « 5 ».
Précisions sur l’affichage des chaînes de caractères
Utiliser des anti-slashes \
pour que les double-quotes (guillemets) "
soient interprêtées correctement côté client:
|
'fr'=>"<p style=\"color: blue;\">Bonjour le monde!</p>" |
|
'fr'=>'<p style="color: blue;">J\'aime PHP!</p>' |
|
echo 'La langue affichée est stockée dans la variable $affiche'; |
ou:
|
echo "La langue affichée est stockée dans la variable \$affiche"; |
…nous afficheront « La langue affichée est stockée dans la variable $affiche ».
|
echo "La langue affichée est stockée dans la variable $affiche"; |
…nous afficheront « La langue affichée est stockée dans la variable fr » (ou fr
est la valeur stockée dans la variable $affiche
.
Syntaxe rdoc
|
<?php $langue = array( 'en'=>'Hello world!', 'fr'=>'<p style="color: blue;">J\'aime PHP!</p>' ); $affiche = 'fr'; $toto = <<<EOT Je suis content d'apprendre PHP. La langue affichée est stockée dans la variable $affiche. EOT ?> <?php echo $toto; ?> |
A noter:
- on utilise
EOT
dans notre exemple, mais on peut mettre n’importe quoi d’autre pourvu que la chaîne de caractères ouvrante et fermante correspondent
- j’ai l’impression que cette méthode ne fonctionne pas si le contenu rdocké se trouve imbriqué dans le même bout de code PHP (
<?php ... ?>
).