|
Tweet | Envoyer cette page |
Cours PHP | Plan du site |
Se connecter
Plus que 18 jours pour gagner 5 jeux !
Marre de la pub ? Devenez membre premium !
![]() | 21 décembre 2012 : la fin du monde ? |
![]() | "Il est déjà trop tard" : l'espèce humaine devrait s'éteindre ce siècle |
![]() | Démographie : la vraie vérité qui dérange |
![]() | Les abeilles, témoins du bon état de notre environnement, disparaissent massivement |
![]() | Un nouveau "continent" de déchets a été découvert dans l'océan Atlantique Nord ! |
![]() | Manger autant de viande est une aberration pour l'environnement et la santé |
![]() | Le pic pétrolier mondial : on doit s'y préparer dès maintenant ! |
![]() | Limiter l'augmentation de la température planétaire à 2 ºC n'est plus réalisable |
![]() | Le déclin de l'industrie nucléaire |
![]() | 7 milliards d'habitants sur Terre |
![]() | Pollution de l'air : plus de 2 millions de morts par an |
Marre de la pub ? Devenez membre premium !
Cartes et données mises à jour en "temps réel"Découvrez l'agenda du mois
> > Février 2012 < <
Marre de la pub ? Devenez membre premium !
www.notre-planete.info : environnement, développement durable et sciences de la Terre
Rappelons que les variables sont des zones mémoires où l'on stocke des valeurs temporaires.
En PHP, il n'est pas nécessaire de déclarer au préalable les variables qui seront utilisées, ni de préciser leur type qui est défini par défaut et de façon transparente par PHP en fonction de leur valeur.
Ainsi, PHP est un langage dit de "typage faible et dynamique", dynamique car le type de la variable évolue en fonction de la valeur que vous lui assignez.
En PHP, tous les noms de variable commencent obligatoirement par le signe $.
L'affectation d'une valeur à une variable s'effectue par le signe = (attention la comparaison s'effectue avec ==).
<?php
$titre_article = "Global Land Cover une image exceptionnelle de la végétation mondiale";
$nb_lectures = 139;
$date_ecriture = "03/12/2003";
$date_actuelle = date("d/m/y");
$auteur = "Christophe";
$source = "Commission européenne";
$lien = "<a href=\"http://www.notre-planete.info/actualites/actu_272.php\" target=\"_blank\">";
$note = $nb_lectures / 10;
$commentaire = $_POST['comment'];
?>
Toute variable qui n'est pas déclarée au sein d'une fonction a une portée par défaut qui s'étend au script, c'est à dire qu'elle conserve sa valeur tout au long de la page uniquement.
PHP supporte trois grands types primitifs de données :
| Type | en français | Plage de valeurs | Exemple |
|---|---|---|---|
| integer | entier | -2 147 483 648 à + 2 147 483 647 |
$var = 12; |
| double | réel | 1.7E-308 à 1.7E+308 | $var = 3.1415957 |
| string | chaîne de caractères | caractère alphanumérique | $var = "bienvenue" |
Rappel : PHP ne requiert pas de déclaration préalable des types de variables qui seront utilisées. Le type est défini par PHP en fonction de la valeur de la variable.
Notons que la présence de l'opérateur "+" convertit automatiquement le type en numérique.
Les exemples suivants nous montrent comment les types sont assignés :
<?php
$var = "0"; //$var est une chaîne de caractères (code ASCII 48)
echo var_dump ($var).'<br />';
$var = $var + 1; //$var est un entier et vaut 2
echo var_dump ($var).'<br />';
$var += 1.3; //$var est de type "double" et vaut 3.3
echo var_dump ($var).'<br />';
$var = 2 + "8 arbres"; //$var est de type "integer" et vaut 10
echo var_dump ($var);
?>
Ce qui se vérifie en exécutant le code :
string(1) "0"
int(1)
float(2.3)
int(10)
Vous l'aurez compris, la fonction var_dump() permet, en cas de coute, de connaître le type et la valeur d'une variable : indispensable pour débuguer.
Il est possible de "typer" et de connaître le type d'une variable qui a été défini grâce aux fonctions gettype() et settype().
Il n'existe pas en PHP de type booléen pour créer une variable qui n'aurait que pour valeur "vrai" ou "faux". Cependant, les valeurs TRUE et FALSE (ou respectivement tout nombre différent de 1 et 0) peuvent être utilisées dans le cadre d'une variable numérique.
<?php
if (gettype($age) != "integer") {
settype ($age,"integer"); // ou encore $age = (int) $age;
}
echo "Vous avez $age ans !";
?>
Les valeurs renvoyées par gettype() sont :
"integer", "double", "string", "array" (pour les tableaux), "object" (pour les objets), "class" (pour les classes) et "unknown type" pour un type inconnu...
Des fonctions permettent également de tester le type de la variable. Elles renvoient VRAI (ou 1) si le type est celui attendu.
is_int(), is_integer(), is_long() renverront VRAI si le type est entier
is_double(), is_float(), is_real() renverront VRAI si le type est double (réel)
is_string(), is_array(), is_object() renverront respectivement VRAI si le type est string, array ou object
Une constance est une référence à une valeur qui ne change pas et qui ne peut être par la suite modifiée.
Les sciences "dures" ont ainsi défini un certain nombre de constantes comme pi (environ 3,14), le zéro absolu (-273,15°C) ou la vitesse de la lumière (300 000 km/s environ). Les sciences sociales également d'ailleurs : taux de chômage en France (8%), personnes n'ayant pas accès à l'eau potable (1,5 milliard)... Voir pour exemple d'autres constantes sur la Terre
Il peut-être utile, dans un site, de définir une constante pour une valeur qui se trouve répétée un certain nombre de fois. Comme par exemple la dénomination de la société éditrice du site, du titre du site ou de son auteur si ces informations sont récurrentes.
Sur le portail notre-planete.info, le titre "notre-planete.info" est répété sur un grand nombre de pages. C'est pourquoi une constante a été définie comme suit :
<?php
define ("SITE", "<strong><font color=\"#00216a\">notre-planete.info</font></strong>"); // titre du site
define ("NA", 21500); // nombre d'abonnés à la newsletter
?>
On remarquera la présence du caractère "\" pour despécialiser les guillemets afin qu'ils ne soient pas interprétés par PHP tout en étant présents pour un code HTML propre. Toutes les constantes sont en majuscule pour s'y retrouver.
Les constantes sont ensuite appelées de cette façon :
<?php
echo SITE;
echo "<br />mon site s'appelle ".SITE." et ".NA." personnes en suivent
l'actualité via la lettre d'information, et vous ?";
?>
Nous noterons dans son appel qu'il faut respecter sa casse, ne pas indiquer le $ propre aux variables et que la commande echo se passe de guillemets si la constante est appelée sans autre chaîne de caractères.
Ce qui donnera donc :
notre-planete.info
mon site s'appelle notre-planete.info et 21000 personnes en suivent l'actualité via la lettre d'information, et vous ?
On peut enfin vérifier la présence d'une constante avec la fonction defined() qui renvoie 1 si cette première a été déclarée et 0 dans le cas contraire :
<?php
if (defined("SITE")) {
echo SITE;
}
?>
Par défaut, PHP comprend un certain nombre de constantes utiles au développeur comme :
<?php
echo PHP_OS; // affichera le système d'exploitation du serveur web
echo '<br />';
echo PHP_VERSION; // affichera le n° de version de PHP
?>
Par exemple sur notre serveur nous avons :
Linux
5.3.8-pl0-gentoo
Une liste des constantes relatives à l'environnement dans lequel s'exécute PHP sont disponibles grâce à la fonction phpinfo().
Cette fonction est particulièrement utile pour connaître l'environnement de travail mais les informations qu'elle fournit permet également à des personnes malintentionnées d'en savoir trop...
Nous avons déjà utilisé la commande echo pour retourner la valeur d'une variable en affichant son contenu. En effet, la commande echo permet d'interpréter une variable pour en afficher la valeur comme en témoignent les exemples suivants :
<?php
$annee_actu = "2003";
echo "Année : $annee_actu<br />";
echo 'Année : $annee_actu<br />';
echo 'Année : '.$annee_actu.'<br />';
echo 'Année n + 2 = '.($annee_actu + 2).'<br />';
echo "La variable \$annee_actu vaut $annee_actu";
// l'emploi du \ est indispensable pour despécialiser
?>
Résultat :
Année : 2003
Année : $annee_actu
Année : 2003
Année n + 2 = 2005
La variable $annee_actu vaut 2003
Nous remarquerons que :
Afin de simplifier l'écriture et la compréhension du code, nous conseillons l'usage des guillemets simples avec la commande echo, la despécialisation des guillemets doubles utilisés largement en HTML n'est plus alors nécessaire.
Il existe de nombreuses fonctions qui permettent d'exploiter les chaînes de caractères, pour les scinder, en extraire des parties, les préparer pour l'intégration dans une base de données.
Voici les principales :
| Fonction | Signification | Exemple |
|---|---|---|
| strlen() | renvoie le nombre de caractères contenus dans la chaîne | $nbcar = strlen($var); |
| substr() | extrait un nombre de caractères d'une chaîne à partir d'une position | $extrait = substr($var,$pos,$nb); |
| trim() | supprime les espaces avant et après la chaîne | $var = trim($var); |
| addslashes() | despécialise les caractères apostrophe ('), double apostrophe (") et le slashe (\) pour les bases de données. | $varbd = addslashes($var); |
| explode() | renvoie dans un tableau les valeurs comprises entre un séparateur | $tableau = explode($delimiteur,$var); |
On pourra consulter utilement toutes les fonctions documentées sur les chaînes de caractères et pour aller plus loin les expressions régulières.
PHP gère deux types de tableaux, ceux à indices numériques (indexés), ce qui est classique et ceux dits associatifs.
Notons qu'il n'est pas obligatoire de déclarer la taille d'un tableau en PHP.
<?php
$mois[1] = "janvier";
$mois[2] = "février";
$mois[3] = "mars";
$mois[] = "avril"; // l'indice 4 a été automatiquement affecté
?>
Rappelons que les tableaux servent à stocker des valeurs multiples dans une même variable.
Pour manipuler ces différentes valeurs, on leur affecte un indice numérique entier noté entre crochets. L'exploitation d'un tableau est rendue possible via les boucles.
Les tableaux sont notamment utilisés dans l'accès aux données d'une table issue d'une base de données.
En cas d'indice alloué automatiquement, il s'agit de l'indice le plus élevé déjà déclaré plus 1.
echo $mois[4];
Résultat :avril
Les chaînes de caractères sont considérées comme des tableaux, c'est à dire que chaque caractère qui forme la chaîne est un élément du tableau avec un indice qui commence à 0 et s'incrémente de 1 pour chaque caractère à droite du premier. Ce qui est classique et utile.
<?php
$site = "notre-planete.info";
// attention ! l'indice de la première lettre est 0
echo "$site[4]<br />";
echo "$site[0]<br />";
?>
Résultat :
e
n
La fonction array permet aussi de déclarer et remplir un tableau comme suit :
<?php
$mois = array("janvier","février","mars","avril");
echo $mois[1];
?>
février
Nous noterons sur cet exemple, qu'aucun indice n'a été nécessaire, l'indexation est automatique, débute à 0 et s'incrémente de 1 pour chaque nouvelle valeur déclarée.
On peut bien sûr imaginer des tableaux à plusieurs dimensions comme dans un jeu de morpion (un passe temps classique en cours) avec deux indices (donc deux dimensions) pour chaque case correspondant au croisement de la colonne x (1er indice ici) avec la ligne y (2ème indice ici) :
<?php
$case[1][1] = "vide";
$case[1][2] = "rond";
$case[1][3] = "croix";
$case[2][1] = "rond";
$case[2][2] = "croix";
$case[2][3] = "vide";
$case[3][1] = "croix";
$case[3][2] = "rond";
$case[3][3] = "vide";
echo "la case 3,1 contient : ".$case[3][1]."<br />";
echo "la case 3,1 contient : $case[3][1]<br />";
echo "la case 3,1 contient : {$case[3][1]}<br />";
?>
Résultat :
la case 3,1 contient : croix
la case 3,1 contient : Array[1]
la case 3,1 contient : croix
Nous noterons ici que l'interprétation ne fonctionne pas avec deux indices sauf si on place la variable a interpréter entre accolades. On peut, bien sûr, concaténer la valeur de la variable au texte.
<?php
print_r($case);
?>
Array ( [1] => Array ( [1] => vide [2] => rond [3] => croix ) [2] => Array ( [1] => rond [2] => croix [3] => vide ) [3] => Array ( [1] => croix [2] => rond [3] => vide ) )
La fonction count() retourne le nombre d'éléments contenus dans un tableau. Ce qui peut être utile pour créer une boucle de lecture de ses éléments. En effet, ainsi nous pouvons spécifier combien d'éléments il faut parcourir.
<?php
$mois[0] = "janvier";
$mois[1] = "février";
$mois[2] = "mars";
$mois[3] = "avril";
$nb = count($mois);
echo "$nb mois ont été renseignés";
?>
Résultat :
4 mois ont été renseignés
La différence provient de l'indice qui n'est plus un nombre mais une chaîne de caractères, ce qui est particulièrement intéressant pour "s'y retrouver".
Exemple :
<?php
$tableau['pays'] = "Etats-Unis";
$tableau['CO2'] = "20";
$tableau['Kyoto'] = "non";
?>
Nous pouvons ensuite interroger ce tableau de la façon suivante :
<?php
echo 'un habitant du pays '.$tableau['pays'].' (ratification de Kyoto : '.$tableau['kyoto'].')
émet en moyenne '.$tableau['CO2'].' tonnes de Co2 par an';
?>
Ce qui aura pour résultat :
un habitant du pays Etats-Unis (ratification de Kyoto : non) émet en moyenne 20 tonnes de Co2 par an
De plus, indices numériques et associatifs peuvent être utilisés en même temps :
<?php
$tableau[0]['pays'] = "Etats-Unis";
$tableau[0]['CO2'] = 20;
$tableau[0]['Kyoto'] = "non";
$tableau[1]['pays'] = "France";
$tableau[1]['CO2'] = 6;
$tableau[1]['Kyoto'] = "oui";
echo 'un habitant du pays '.$tableau[0]['pays'].' (ratification de Kyoto : '.$tableau[0]['Kyoto'].')
émet en moyenne '.$tableau[0]['CO2'].' tonnes de Co2 par an<br /><br />';
echo 'un habitant du pays '.$tableau[1]['pays'].' (ratification de Kyoto : '.$tableau[1]['Kyoto'].')
émet en moyenne '.$tableau[1]['CO2'].' tonnes de Co2 par an';
// on aurait fait plus simplement, sans mélanger les types d'indice :
unset($tableau); // pour initialiser notre variable tableau déjà remplie
$tableau['France']['CO2'] = 6;
$tableau['France']['Kyoto'] = "oui";
$tableau['Etats-Unis']['CO2'] = 20;
$tableau['Etats-Unis']['Kyoto'] = "non";
echo 'un habitant du pays '.key($tableau).' (ratification de Kyoto : '.$tableau['France']['Kyoto'].')
émet en moyenne '.$tableau['France']['CO2'].' tonnes de Co2 par an<br /><br />';
next($tableau); // on avance le pointeur du tableau vers le pays suivant
echo 'un habitant du pays '.key($tableau).' (ratification de Kyoto : '.$tableau['Etats-Unis']['Kyoto'].')
émet en moyenne '.$tableau['Etats-Unis']['CO2'].' tonnes de Co2 par an';
?>
Résultat :
un habitant du pays Etats-Unis (ratification de Kyoto : non) émet en moyenne 20 tonnes de Co2 par an
un habitant du pays France (ratification de Kyoto : oui) émet en moyenne 6 tonnes de Co2 par an
un habitant du pays France (ratification de Kyoto : oui) émet en moyenne 6 tonnes de Co2 par an
un habitant du pays Etats-Unis (ratification de Kyoto : non) émet en moyenne 20 tonnes de Co2 par an
Quelques fonctions nous permettent de vérifier qu'une variable possède une valeur ou au contraire, n'en a pas.
| Fonction | Signification | Exemple |
|---|---|---|
| isset() | détermine si une variable possède une valeur | isset ($var) |
| unset() | détruit une variable, libérant la mémoire qu'elle occupe | unset ($var) |
| empty() | vérifie si une variable n'est pas définie, vide ("") ou égale à 0 | empty ($var) |
Ces fonctions sont notamment utilisées dans l'exploitation des formulaires HTML ou la sécurisation des scripts.
Haut de page ^
Offres d'emploi et CV
Livres et DVD
Associations
Communiqués
Agenda
Flux RSS
Partenaires
Page mise à jour le 30/11/2011 20 connectés© 2001-2012 notre-planete.info® v. 5.69 - tous droits réservés
notre-planete.info est un site indépendant qui informe et sensibilise objectivement sur l'environnement, l'écologie, les sciences de la Terre et le développement durable
Mentions légales |
Presse |
Publicité |
Contact |
Liens et logos |
Soutenez notre-planete.info !