
Une variable commence par un dollar « $ » suivi d'un nom de variable. Les variables ne sont pas typées au moment de leur création. Attention PHP est sensible à la casse : var et Var ne sont pas les mêmes variables! Voici les règles à respecter :
Exemple de déclaration :
<?php
// Déclaration et règles
$var=1; // $var est à 1
$Var=2; // $Var est à 2
$_toto='Salut'; // Ok
$3petitscochons=5; // Invalide : commence par un chiffre
?>
Leur type dépend de leur valeur et de leur contexte d'utilisation. Mais on peut forcer (cast) ponctuellement une variable à un type de données, ce qui s'appelle le transtypage. De même comme le type de variable peut changer en fonction de son utilisation ou du contexte, PHP effectue
automatiquement un transtypage, ce qui peut parfois fournir des résultats surprenants. On affecte une valeur à une variable avec le signe égal «=» avec ou sans espace avant ou après.
<?php
// Déclaration et transtypage
$var='2'; // Une chaîne 2
$var+=1; // $var est maintenant un entier 3
$var=$var+0.3; // $var est maintenant un réel de type double 3.3
$var=5+ "3 petits cochons"; // $var est un entier qui vaut 8
?>
Par défaut les variables sont assignées par valeur : la valeur assignée à la variable est recopiée dans la variable. PHP peut aussi travailler par référence. Une variable peut donc référencer une autre variable. On dit alors que la variable devient un alias, ou pointe sur une autre variable. On assigne
par référence en utilisant le signe « & » devant la variable assignée
<?php
$var=2;
$ref=&$var; // $ref devient une référence de $var
echo $ref; // affiche 2
$var=3;
echo $ref; // affiche 3
$ref=4;
echo $var; // affiche 4
?>
Attention à la valeur constante NULL insensible à la casse. Affecter une valeur NULL à une variable signifie ne pas puis affecter de valeur.
La portée d'une variable dépend du contexte. Une variable déclarée dans un script et hors d'une fonction est globale mais par défaut sa portée est limitée au script courant, ainsi qu'au code éventuellement inclus (include, require) et n'est pas accessible dans les fonctions ou d'autres scripts.
<?php
$a=1; // globale par défaut
function foo() {
echo $a; // c'est une variable locale à la fonction : n'affiche rien
}
?>
Pour accéder àunevariableglobaledansunefonction,ilfaututiliserlemot-clé global
<?php
$a=1; // globale par défaut
$b=2; // idem
function foo() {
global $a,$b; // on récupère les variables globales
$b=$a+$b;
}
echo $b; // affiche 3
?>
PHP accepte les variables statiques. Comme en C une variable statique ne perd pas sa valeur quand on sort d'une fonction.
<?php
function test_static() {
static $a=0;
echo $a; // +1 à chaque passage dans la fonction
$a++;
}
?>
PHP dispose d'un grand nombre de variables prédéfinies. Ces variables sont généralement de type scalaires ou des tableaux. Elles sont souvent de type superglobales, c'est à dire accessible depuis n'importe où sans notion de portée. Voici quelques tableaux prédéfinis (voir au point Tableaux pour
comprendre leur utilisation).
Une variable dynamique utilise la valeur d'une variable comme nom d'une autre variable. On utilise les variables dynamiques en rajoutant un «$» devant le nom de la première variable.
<?php
$a="var";
$$a=1; // $$a=1 equivaut en fait à $var=1
echo $a; // affiche var
echo $$a; // affiche 1
echo $var; // affiche 1
?>
Attention avec les tableaux! Pour éviter toute ambiguïté, il est préférable de placer la variable entre accolades.
Un booléen peut prendre deux valeurs TRUE ou FALSE. Les deux constantes TRUE et FALSE peuvent être utilisées sans aucune distinction de casse (pas de différences entre les majuscules et les minuscules).
<?php
$var=FALSE; // FALSE, False, false, ...
$var2=True; // TRUE, True, true, ...
?>
Tous les types peuvent être convertis en booléens. Voici les cas où une variable retournera FALSE en booléen suivant le type:
• Booléen :FALSE
• Entier :0 (zéro)
• Nombre flottant:0.0 (zéro)
• Chaîne:chaîne vide "" ou "0"(zéro)
• Tableau :tableau vide sans aucun élément
• Objet:objet vide sans aucun élément
• Constante spéciale NULL
Dans tous les autres cas, la valeur retournée est TRUE. Attention : -1 est considéré comme vrai donc TRUE. Comme en C, les tests de conditions dans les structures de contrôles effectuent une convertion booléenne de la condition.
<?php
if($var==true)
echo "ok";
if($var)
echo "ok"; // Identique
?>
Un entier est l'ensemble des nombres naturels, c'est à dire sans virgule, positifs ou négatifs. Les entiers sont généralement codés sur 32 bits mais cela dépend de l'architecture. Si on affecte un nombre entier qui dépasse la capacité de la variable, celle-ci sera transformée en réel (float). Enfin il n'y a pas de notion d'entier non signé. Lors de la conversion d'un booléen en entier, FALSE devient 0 et TRUE devient 1. Lors de la conversion d'un nombre à virgule flottante, le nombre sera arrondi à la valeur inférieure s'il est positif, ou supérieure s'il est négatif (conversion vers zéro). Pour la conversion depuis les chaînes, voir à ce type.
On parte ici des nombres réels, double ou float, c'est à dire les nombres à virgules. La virgule est spécifiée par le point« . ». La puissance de 10 s'exprime avec le « e » ou le « E »
<?php
$var=1.234;
$var2=1.1e4; // 1.1 * 10^4 : 11000
?>
Une chaîne est une séquence de caractères. PHP travaille en ASCII soit 256 caractères, mais ne supporte pas encore le format Unicode, prévu dans la version 5. Il n'y a pas de limite théorique pour la taille de la chaîne. On distingue trois syntaxes pour utiliser une chaîne
Voici une liste issu de la documentation PHP des séquences pouvant être utilisés avec les guillemets doubles.
\n Nouvelle ligne(linefeed, LFou 0x0A(10) en ASCII)
\r Retour à la ligne(carriage return, CRou 0x0D(13) en ASCII)
\t Tabulation horizontale(HTou 0x09(9) en ASCII)
\\ Antislash
\$ Caractère $
\" Guillemets doubles
\[0-7]{1,3} Une séquence de caractères qui permet de rechercher un nombre en notation octale.
\x[0-9A-Faf]{1,2} Une séquence de caractères qui permet de rechercher un nombre en notation hexadécimale.
<?php
echo 'Attention l\'abus d\'alcool est dangereux';
$var=2345;
echo "la valeur de \$var est $var\n";
$toto= <<<FIN
Salut les amis
Comment ça va ?
FIN;
echo $toto;
?>
N'importe quelle variable peut être affichée dans une chaîne comme ci-dessus mais attention si deux variables ont un nom proche ! Il faut alors utiliser les accolades { } comme en shell. Enfin on peut accéder à n'importe quel caractère dans une chaîne en indiquant sa position (qui commence à zéro) entre deux accolades collées juste après le nom de la variable.
<?php
$fic='toto.fic';
$fics='riri fifi loulou';
echo "$fics ${fic}s"; // affiche riri fifi loulou toto.fics
echo "$fic{3}"; // affiche o
?>
On peut facilement concaténer deux chaînes avec l'opérateur point « . ». On peut ajouter du texte à une chaîne avec l'opérateur point égal « .= »
<?php
$str="Salut les Amis !\n";
$str.="Comment ça va ?"; // "Salut les Amis !\nComment ça va ?
$str2=$str."\n"; // "Salut les Amis !\nComment ça va ?\n
?>
Si vous devez utiliser une chaîne de caractères comme valeur numérique (dans une addition par exemple, attention à son contenu. La chaîne sera de type double (réel) si elle contient un 'e' ou un 'E'. Sinon ce sera un entier. La valeur numérique est ensuite définie par le début de la chaîne. Si la chaîne commence par une valeur numérique, elle sera utilisée, sinon elle sera égale à 0 zéro. Si la première expression est une chaîne,le type de variable dépend de la seconde expression.
<?php
$val=10+"2.55"; // float, 12.55
$val=1+"toto2"; // 1 + 0 = 1
$val=2+"3 petits cochons"; /* 2 + 3 = 5
(le 3 est en premier dans la chaîne)
*/
?>
Un tableau PHP est une association ordonnée. Une association fait correspondre des valeurs à des clés. Les tableaux sont très souples, ils peuvent avoir de multiples dimensions, être indexés par une clé numérique ou texte, être utilisés comme table de hachage, une pile, une queue, ... Une valeur de tableau peut être elle-même un tableau, pour créer des arbres par exemple. Un tableau est créé avec la fonction array() qui prend comme arguments des paires « key => value » séparées par des virgules. La clé peut être soit un entier soit du texte. Attention, 8 est un entier, 08 une chaîne ! Si la clé est absente alors c'est la dernière clé entière plus 1 qui est choisie. Si c'est la première, c'est 0 zéro.
On accède aux éléments d'un tableau à l'aide des crochets « [ et ] ». On place entre ces crochets la clé entière ou la chaîne.
<?php
$var=array(10,15,17,23,9);
echo $var[0]; // 10
echo $var[3]; // 17
$tab=array("a"=>12,"nom"=>"toto","pipo",17,4=>5);
echo $tab[0]; // pipo
echo $tab[1]; // 17
echo $tab['a']; // 12
echo $tab['nom']; // toto
?>
L'utilisation de la fonction array n'est pas obligatoire et on peut déclarer un tableau à la volée.
<?php
$tab2[1]=2;
$tab2[]=6; // equivaut $tab2[2]=6
$tab2['test']='Ma chaîne';
?>
On peut aussi créer des tableaux multidimensionnels à l'aide des deux méthodes précédentes.
<?php
$tab=array(
"un"=>array("riri",1=>"fifi",2=>'loulou'),
2=>array(1,2,3),
array('un','deux','trois')
);
echo $tab['un'][0]; // riri
echo $tab[2][1]; // 2
echo $tab[3][2]; // trois
$tab2['un']['deux']='test';// créé un tableau à deux dimensions
?>
Il existe une fonction très pratique pour lister le contenu d'un tableau, ou pour modifier les éléments : foreach()
<?php
$tab=array(1=>'un',2=>'deux',3=>'trois');
foreach($tab as $valeur) {
echo"$valeur\n"; // affiche un deux trois
}
foreach($tab as $cle=> $valeur) {
echo "$cle=> $valeur\n"; // affiche 1 => un, 2 => deux, 3 => trois
}
?>
Les objets se créent avec l'instruction class. Pour créer une instace de l'objet il faut utiliser le mot clé new.
<?php
class test{
function affiche_hello(){
echo "Hello !";
}
}
$obj=new test();
$obj->affiche_hello();
?>
Les constantes est un nom qui prend une valeur ne pouvant pas être modifiée une fois fixée. Une constante n'est accessible qu'en lecture seule. Elles sont sensibles à la casse et doivent par convention être écrites en majuscules.
On définit une constante avec la fonction define() et doit respecter certaines règles:
<?php
define(CONSTANTE,"valeur");
echo CONSTANTE; // affiche "valeur"
?>
Pour obtenir le type d'une variable, on utilise la fonction « gettype » qui retourne une chaîne de texte indiquant le type. Mais attention rien ne garantit que le résultat soit le même d'une version PHP à une autre.
Les types retournés sont "boolean", "integer", "double" (pour des raisons historiques, "double" est retournée lorsqu'une valeur de type float est fournie, au lieu de la chaîne "float"), "string", "array", "object", "resource"(depuis PHP4), "NULL"(depuis PHP4), "unknown type" Si vous souhaitez réellement tester le type d'une variable, il est préférable d'utiliser les fonctions de type « is_* » : is_array, is_bool, is_double, is_float, is_int, is_integer, is_long, is_null, is_numeric, is_object, is_real,is_resource, is_string,is_callable(est-ce une fonction).
Si vous souhaitez savoir si une variable est définie, c'est à dire si elle est affectée, on utilise « isset ». Enfin si vous souhaitez supprimer une variable, il faut utiliser « unset ».