Accueil
Cours

Variables

Les variables sont précédées du signe $, quelque soit leur type. Leur déclaration est optionnelle.

Si vous voulez forcer une variable à être convertie en un certain type, vous devez "caster" la variable ou utiliser la fonction settype().

On dispose de 3 types de variables: scalaire, tableau et tableau associatif. Il n'y a pas de type pointeur.

nombre entier

$a = 1234; # nombre entier
$a = -123; # nombre entier négatif

Les nombres à virgule flottante ("doubles")

$a = 1.234;
$a = 1.2e3;

Les chaînes de caractères

Si la chaîne de caractères est délimitée par des double-quotes ("), les variables à l'intérieure de la chaîne de caractères seront remplacées. Comme en C ou en Perl, le caractère backslash (\) est utiliser pour "protéger" un caractère spécial.

séquence signification
\n nouvelle ligne
\r retour à la ligne
\t tabulation horizontale
\\ backslash
\$ caractère $
\" double-quote

Exemple possible

$prenom = "Simon";
$message = "bonjour $prenom";
$echo $message;
bonjour Simon

Conversion de type

Lorsqu'une chaîne de caractère est évaluée comme une valeur numérique, le résultat et le type de la variable sont d&eacite;terminés comme suit:

La chaîne de caractère est de type "double" si elle contient un des caractère '.', 'e' ou 'E'. Sinon, elle est de type "integer".

La valeur est définit par la première partie de la chaîne. Si la chaîne de caractères débute par une valeur numérique cette valeur sera celle utilisée. Sinon, la valeur sera égale à 0 (zéro).

Lorsque la première expression est une chaîne de caractères, le type de la variable dépend de la seconde expression.

$foo = 1 + 10.5; // $foo est du type "double"
$foo = 1 + -1.3e3; // $foo est du type "double" (-1299)
$foo = 1 + "bob-1.3e3"; // $foo est du type "integer"
$foo = 1 + "10 trucs"; // $foo is est du type "integer" curieux mais

11.5
-1299
1
11
11

Tableaux

Talbeaux à une dimension PHP supporte les talbeaux scalaires et les tableaux associatifs.

Vous pouvez créer un tableaux en utilisant les fonctions list() ou array(), ou bien en affectant explicitement chacune des valeurs.

$a[0] = "abc";

$a[1] = "def";
$b["foo"] = 13;
Vous pouvez aussi créer un tableau en ajoutant simplement les valeurs à ce tableau.
$a[] = "hello"; // est equivalent à $a[2] == "hello"
$a[] = "world"; // est equivalent à $a[3] == "world"

Déclaration

$fruits= array();

Affectation

$fruits[0]= "pomme"; $fruits[1]= "banane"; $fruits[] .= "orange"; // equivaut a $fruits[2]= "orange" $fruits= array( "pomme", "banane", "orange" );

sizeof : Renvoie le nombre d'éléments d'un tableau. équivalent de count :

3

is_array : Renvoie true si la variable est de type tableau (ou tableau associatif), false sinon.

reset : reset($tablo) place le pointeur interne sur le premier élément du tableau: Chaque variable tableau possède un pointeur interne repérant l'élément courant.

end : end($tablo) place le pointeur interne du tableau sur le dernier élément du tableau.

current : renvoie l'élément courant du tableau.

next : déplace le pointeur vers l'élément suivant, et renvoie cet élément. renvoie false si il n'existe pas

prev : déplace le pointeur vers l'élément précédent, et renvoie cet élément. renvoie false si il n'existe pas

each : $a=each($tablo) renvoie l'index et la valeur courante dans un tableau à 2 elements; $a[0] contient l'index, $a[1] la valeur.

list : list( $scalar1, $scalr2, ... ) construit un tableau temporaire à partir des variables scalaires passées en argument.

key : key($tablo) renvoie l'index de l'élément courant du tableau.

sort, rsort, usort, uasort : Differentes fonctions de tri de tableau.

Tableau associatif

Un tableau associatif est un tableau dont l'index est une chaine de caractère au lieu d'un nombre. On parle aussi de ``hash array'' ou ``hash''. Il se déclare comme un tableau traditionnel, la distinction se fait lors de l'affectation.

Déclaration $calories= array(); // comme un tableau

Affectation

Affectons un nombre de calories moyen aux fruits.

$calories["pommes"]= 300; $calories["banane"]= 130; $calories["litchie"]= 30;

Conversion de types

Les conversions authorisées sont:
(int), (integer) - conversion vers le type "integer"
(real), (double), (float) - conversion vers le type "double"

(string) - conversion vers le type "string"

(array) - conversion vers le type "array"

(object) - conversion vers le type "object"

Portée des variables

La portée d'une variable dépends du contexte dans lequel la variable est définie. Pour la plupart des variables, la portée concerne la totalité d'un script PHP. Mais, lorsque vous définissez une fonction, la portée d'une variable définie dans cette fonction est locale à la fonction.

Pour ne pas perdre le contenu on utilise l'instruction static

$a = 1; /* portée globale */

Function Test () {
echo $a; /* portée locale */
}

Test ();

rien d'affiché car echo utilise la variable locale $a

En PHP, une variable globale doit être déclarée à l'intérieure de chaque fonction afin de pouvoir être utilisée dans cette fonction. Par exemple:

$a = 1;
$b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;

3

Function Test () {
static $a = 0;
echo $a;
$a++;
}

012

Les variables extérieures au PHP

Formulaire HTML (GET et POST)
Lorsqu'un formulaire est envoyé à un script PHP, toutes les variables du formulaires seront automatiquement disponibles dans le script.

<form action="foo.php3" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>

rsque ce formulaire est envoyé, le PHP va créer la variable $name, qui contiendra la valeur que vous avez entré dans le champ Name du formulaire.

Le PHP permet aussi l'utilisation des tableau dans le contexte de formulaire, mais seulement des tableaux à une seule dimension.

<form action="array.php" method="post">
Name: <input type="text" name="personal[name]"><br>
Email: <input type="text" name="personal[email]"><br>
Beer: <br>
<select multiple name="beer[]">
<option value="warthog">Warthog
<option value="guinness">Guinness
</select>
<input type="submit">
</form>


les variables transmises par les méthodes POST et GET pourront aussi être trouvées dans le tableau associatif global $HTTP_POST_VARS ou $HTTP_GET_VARS suivant la méthode utlisée.

Pour récupération: utilisation de la variable définie dans le formulaire.

pour version PHP < 4.1 directement $var

pour version PHP >= 4.1 directement $_POST['var'] ou $_GET['var']

pour connaitre la version du PHP

PHP_VERSION

Variables d'environnement

Le PHP fait en sorte que les variables d'environnement soit accéssible directement comme des variables PHP normales.

echo $HOME; /* Affiche la valeur de la variable d'environnement HOME*/

La fonction getenv() peut être utilisé pour récupéré la valeur des variables d'environnement. Vous pouvez aussi affecter une variable d'environnement grâce à la fonction putenv().

Détermination du type des variables

Pour connaitre les types de variables : Les fonctions gettype(), is_long(), is_double(), is_string(), is_array(), et is_object() permettent de déterminer si le type de variable correspond.

Constantes

PHP permet de definir des constantes a l'aide de la fonction define.

__FILE__contient le nom du fichier

__LINE__le numéro de la ligne courante.

TRUE , FALSE , E_ERROR , E_WARNING

Vous pouvez définir d'autres constantes en utilisant la fonction define().

vous etes sur le fichier : /mnt/153/sdb/f/c/epidstory/CPI-SITE/CPI_PHP/PHPCours/php2opevariable.php et 295

define("message","vous etes sur le fichier : " );
echo (message);
echo "vous etes sur le fichier", __FILE__ , "a la ligne " ,__LINE__;

Variables systemes

$PHP_AUTH_USER code utilisateur

$PHP_AUTH_PW mot de passe

$PHP_USER_AGENT version du navigateur

$HTTP_ACCEPT_LNGUAGE : codes langues exp : fr , en

$REMOTE_ADDR : adresse IP

$DOCUMENT_ROOT : répertoire physique contenant la page affichée.

Tests sur variables

La fonction isset permet de tester si une variable est définie.

La fonction unset permet de supprimer la variable, et de désallouer la mémoire utilisée.

La fonction gettypepermet de connaitre le type de la variable. Elle renvoie une chaine : ``string'' ou ``integer'' ou ``double'' ou ``array'' ou ``object''. Note : Si la variable n'est pas définie, elle renvoie "string"

echo isset($a); // => 0 (faux) $a= ""echo isset($a); unset($a); echo isset($a); // => 0 (faux)

-->1 init 1 unset

 

$a=12; echo gettype($a) ; // => "integer" $a= $a / 10; echo gettype($a) ;"

integer
double

On peut également tester un type particulier a l'aide des fonctions is_array , is_string, is_int,is_float, is_object .

Envoyez un courrier électronique à Philippe Bancquart pour toute question ou remarque concernant ce site Web.