1 / 67

Le langage PHP 5

Le langage PHP 5. Sommaire. Qu’est-ce que PHP ? Les structures de base Traitements de base Traitements de chaînes Utilisation des tableaux Fonctions usuelles Formulaires et superglobales Environnement web et superglobales Les cookies et Les sessions Gestion des objets

trent
Télécharger la présentation

Le langage PHP 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Le langage PHP 5

  2. Sommaire • Qu’est-ce que PHP ? • Les structures de base • Traitements de base • Traitements de chaînes • Utilisation des tableaux • Fonctions usuelles • Formulaires et superglobales • Environnement web et superglobales • Les cookies et Les sessions • Gestion des objets • Gestion de fichiers • Gestion des flux et Flux de sortie PHP • Envoyer et recevoir des e-mails • Travailler avec une base de données

  3. Sommaire • Erreurs et exceptions • XML : concepts et SimpleXML • XML avancé • Les services web • Les templates • Les systèmes de cache • Gestion des images • Expressions régulières • Sécurité • Outils de développement PHP • Les CMS • Les frameworks

  4. Traitements de chaînes Fonctions d’affichage • Les mots-clés echo() et print() permettent d’afficher tous types de valeurs. Les parenthèses autour de la valeur à afficher sont optionnelles. • echo( 'Rachid' ) ; • echo ‘Rachid' ; • echo 'PHP ', 5, ' avancé', $param ;

  5. Traitements de chaînes Affichages avec masques • Plutôt que de faire de multiples concaténations, vous pouvez définir une structure générique et demander à PHP de remplacer certaines composantes par des paramètres. <?php $version = 5 ; $miroir = 'fr' ; $masque = 'PHP %d est disponible sur http://%s.php.net' ; printf($masque, $version, $miroir) ; ?> // PHP 5 est disponible sur http://fr.php.net

  6. Traitements de chaînes Syntaxe des masques de printf • Les masques sont symbolisés par le signe de pourcentage % suivi de leur type. Le premier masque sera remplacé par le premier paramètre, et ainsi de suite. À la suite du % doit suivre une lettre désignant le type de donnée à afficher : • %s correspond à une chaîne de caractères. • %d et %u symbolisent des nombres entiers, le premier signé, le deuxième non signé. • %f affiche un nombre à virgule flottante. • %b, %o, %x représentent des entiers, mais à afficher respectivement en notation binaire, octale et hexadécimale. La notation hexadécimale utilise des minuscules pour les caractères alphabétiques, utilisez %X pour avoir des majuscules. <?php printf('%s <br>', 'PHP5') ; // Affiche PHP5 printf('%d <br>', -6) ; // Affiche -6 printf('%f <br>', -6.343) ; // Affiche -6.343 printf('%b <br>', 3) ; // Affiche 11 car 1*2 + 1*1 printf('%o <br>', 15) ; // Affiche 17 car 1*8 + 7*1 printf('%x %X <br>', 16, 17) ; // Affiche 10 11 ?>

  7. Traitements de chaînes Syntaxe des masques de printf • Une fonctionnalité utile vous permet d’être sûr de la taille que fera votre chaîne pour le rendu visuel de vos applications. Pour ce faire, il faut compléter le masque par des 0 ou des espaces, à droite ou à gauche. <?php printf('%03d', 1) ; // Affiche 001 printf('%-4s B', 'A') ; // Affiche A B (4 espaces) printf('%08.4f', 1.0) ; // Affiche 001.0000 ?>

  8. Traitements de chaînes Fonctions assimilées à printf • La fonction printf()renvoie la chaîne résultante sur l’affichage. Une seconde fonction sprintf() renvoie la chaîne en retour de fonction. <?php printf('%s', 'bonjour') ; // Affiche "bonjour" directement $texte = sprintf('%s', 'bonjour') ; // Met le texte en variable echo $texte ; // Affiche "bonjour" lors de l’appel à echo ?> • Si vous devez passer un nombre important de paramètres à la fonction printf(), vous pouvez utiliser un tableau les contenant tous. Dans ce cas, utilisez les fonctions vprintf() et vsprintf(), <?php $data = array( 'PHP', 5 ) ; vprintf('%s %d', $data) ; // Affiche "PHP 5" directement $texte = vsprintf('%s %d', $data) ; // Met le texte en variable echo $texte ; // Affiche "PHP 5" lors de l’appel à echo ?>

  9. Traitements de chaînes Scanner une chaîne de caractères • sscanf() permet de récupérer les variables à partir d’une chaîne de caractères et fscanf() permet de parcourir un fichier. Le premier paramètre est la chaîne à parcourir ou le pointeur de fichier, le second est le masque. Les deux renvoient la valeur FALSE si la chaîne en entrée ne correspond pas au masque. <?php $texte = '3 arrondi de 3.14' ; list($entier, $chaine, $flottant) = sscanf($texte, '%d %s de %f') ; echo $entier, '<br>'; echo $chaine, '<br>'; echo $flottant, '<br>'; ?>

  10. Traitements de chaînes Valeur ASCII d’un caractère • La valeur ASCII d’un caractère est donnée par la fonction ord() (pour ordinal value en anglais). La fonction chr() fait l’opération inverse et renvoie un caractère à partir de son code ASCII. <?php echo ord('a') ; // Renvoie 97 echochr(97) ; // Renvoie a ?> • On peut se servir des caractères ASCII et de la conversion pour afficher l’ensemble de l’alphabet. La lettre a minuscule correspond au code ASCII 97 et z correspond à 122. Il suffit donc de faire une boucle et de convertir le code ASCII en caractères. <?php // Script permettant d’afficher l’alphabet for ($i=97 ; $i <= 122 ; $i++){ $chaine .= chr($i); } echo $chaine; ?>

  11. Traitements de chaînes Taille d’une chaîne • La taille d’une chaîne de caractères (le nombre de signes, espaces et caractères blancs compris) est donnée par la fonction strlen(). <?php $livre = 'PHP 5 avancé' ; echostrlen($livre) ; // Affiche 12 ?> • Il vous est aussi possible de trouver le nombre de mots d’une chaîne grâce à la fonction str_word_count(). <?php $livre = 'PHP 5 avancé' ; echostr_word_count($livre) ; // Affiche 3 ?>

  12. Traitements de chaînes Lister les mots d’une chaîne • Si vous fournissez un deuxième argument à la fonction str_word_count(), elle vous renverra la liste de tous les mots dans un tableau. Si la valeur de l’argument est 1, l’index sera l’ordre des mots, à partir de 0 <?php $livre = 'PHP 5 avancé' ; $tab = str_word_count($livre, 1) ; var_dump($tab) ; ?>

  13. Traitements de chaînes Position d’une sous-chaîne • La fonction strpos() permet de connaître la position d’une chaîne dans une autre. La valeur FALSE est renvoyée si la chaîne n’est pas trouvée. <?php $pos = strpos('eric.abcdef@dreams4net.com', '@') ; if($pos === FALSE) { echo 'Le caractère @ n\'est pas présent'; } else { echo "Le caractère @ est présent à la position $pos"; } ?> • La fonction stripos() est identique mais permet de ne pas tenir compte de la casse lors de la recherche. La fonction strrpos() permet, elle, de faire la recherche de droite à gauche au lieu de gauche à droite. Il existe une fonction strripos(), cumulant les deux.

  14. Traitements de chaînes Présence de certains caractères • Vous pouvez avoir besoin de vérifier la présence de caractères ou de sous-chaînes dans un texte. Généralement, cela sert pour vérifier des données transmises par un utilisateur. La fonction strspn() retourne la longueur de la première sous-chaîne contenant uniquement les caractères spécifiés. La fonction strcspn() fait l’opération inverse et retourne la longueur de la première sous-chaîne ne contenant aucun des caractères spécifiés. <?php $chaine = "chaîne à vérifier" ; $masque = "'" ; if( strcspn($chaine, $masque) == strlen($chaine) ) { echo 'il n y a pas d\’apostrophes' ; } else { echo 'il y a des apostrophes' ; } ?>

  15. Traitements de chaînes Protections et échappements • La fonction addslashes() permet de protéger automatiquement les guillemets, apostrophes et barres obliques inverses en les préfixant automatiquement. Cette fonction est particulièrement utile dans la préparation de requêtes SQL pour que les apostrophes ne soient pas interprétées comme des délimiteurs de texte mais comme de simples caractères. <?php $nom = "PIERRE de GEYER d'ORTH"; $prenom = "Cyril"; $nom = addslashes($nom); $prenom = addslashes($prenom); $sql = "INSERT INTO user (prenom, nom) VALUES ('$prenom', $nom)"; // Sans l’appel à addslashes() l’apostrophe du nom // aurait pu provoquer une erreur. ?>

  16. Traitements de chaînes Protections et échappements • La fonction addcslashes() est la même fonction, plus étendue. Elle convertit aussi les fins de ligne et les retours chariot (en \n et \r), ainsi que les caractères dont le code ASCII est inférieur à 32 ou supérieur à 126 (avec la syntaxe \xx où xx est le code ASCII du caractère). Le premier paramètre est la chaîne à convertir, le second paramètre contient la liste des caractères à échapper. Vous pouvez définir des suites de caractères en les séparant par deux points (exemple \0..\32). <?php $texte = "texte\n\r\"\'texte" ; // Affiche texte et "'texte, sur deux lignes echo $texte ; // Affiche texte et \"\'texte, sur deux lignes echoaddslashes($texte) ; // Affiche texte\n\r\"\'texte, sur une ligne echoaddcslashes($texte, "\"'\n\r") ; ?>

  17. Traitements de chaînes Protections et échappements • Les fonctions stripslashes() et stripcslashes() permettent de faire les opérations inverses et de récupérer une chaîne échappée pour la transformer en chaîne simple. Attention, dans cette conversion tous les codes commençant par une barre oblique inverse sont convertis en utilisant la convention du langage C : les codes \n, \t, \r et \nnndéfinissent les caractères de fin de ligne, de tabulation, de retour chariot, et le caractère de valeur ASCII nnn.

  18. Traitements de chaînes Protection pour bases de données • Les protections à faire avant insertion dans une base de données dépendent de la base de données utilisée. Il suffit généralement d’opérer un échappement des apostrophes en \' ou '' . • PDO vous propose la méthode quote() de l’objet de connexion pour effectuer cette opération. Elle prend en argument une chaîne de caractères et la formate de façon à pouvoir l’utiliser directement dans une requête SQL : des délimiteurs de chaîne sont insérés autour et les caractères spéciaux sont échappés. <?php $nom = "PIERRE de GEYER d'ORTH"; $nom = $dbh->quote($nom); // Insertion d’un enregistrement $sql = "INSERT INTO auteur (login, nom) VALUES ('Cyruss6',$nom)"; $dbh->exec($sql); ?>

  19. Traitements de chaînes Protection pour bases de données • Si vous n’utilisez pas PDO, vous pouvez employer les fonctions natives liées à votre SGBD. Par exemple, pour MySQL, on peut utiliser la fonction mysqli_escape_string(), alors que pour PostgreSQL, il s’agit de pg_escape_string() et pg_escape_bytea(). <?php $texte = "L'arrivée" ; $protect = mysql_escape_string($texte) ; $sql = "SELECT * FROM table WHERE texte = '$protect'" ; ?>

  20. Traitements de chaînes Protections pour HTML • Lorsque vous envoyez des chaînes de caractères vers l’affichage dans le cadre d’une page web, ces caractères sont interprétés. Ainsi, <br> ne s’affichera pas mais provoquera un changement de ligne. Pour éviter que ces chaînes soient interprétées, il faut en convertir les caractères spéciaux (<, > et &) en entités (&lt;, &gt; et &amp;). • La fonction htmlspecialchars() permet d’effectuer cette conversion. Elle prend deux paramètres optionnels en plus de la chaîne à transformer. • Le premier paramètre permet de convertir aussi les guillemets et les apostrophes.La valeur ENT_COMPAT convertit les guillemets mais pas les apostrophes, la valeur ENT_NOQUOTES ne convertit aucun des deux, la valeur ENT_QUOTES convertit les deux. • Le deuxième paramètre définit le jeu de caractères à utiliser lors de la conversion. Le jeu par défaut est ISO-8859-1.

  21. Traitements de chaînes Protections pour HTML <?php $texte = "valeur avec & <br> et avec \" et '" ; // Ne convertit rien, tout est interprété echo $texte , "<br>\n" ; // Convertit les caractères &, >, < et " echohtmlspecialchars($texte) , "<br>\n "; echohtmlspecialchars ($texte, ENT_COMPAT) , "<br>\n "; // Convertit les caractères &, >, <, " et ' echohtmlspecialchars ($texte, ENT_QUOTES), "<br>\n " ; // Convertit les caractères &, > et < uniquement echohtmlspecialchars ($texte, ENT_NOQUOTES) , "<br>\n "; ?>

  22. Traitements de chaînes Protections pour HTML • Il est aussi possible de convertir tous les caractères spéciaux sous forme d’entités (par exemple les caractères accentués) via la fonction htmlentities(). Son utilisation est identique à la précédente. • La fonction inverse est html_entity_decode(), qui prend aussi les mêmes paramètres.

  23. Traitements de chaînes Conversion des changements de lignes • Pour permettre à un texte de s’afficher dans une page HTML avec des fins de ligne là où c’était prévu, il vous faudra probablement convertir votre texte en HTML. À défaut de conversion complète utilisant les balises HTML de paragraphe, PHP vous offre la possibilité d’ajouter automatiquement un <br /> avec chaque caractère de fin de ligne en utilisant la fonction nl2br(). <?php $texte = "première ligne \n deuxième ligne" ; echo nl2br($texte) ; ?> • Le code HTML obtenu sera :première ligne <br />deuxième ligne

  24. Traitements de chaînes Suppression des balises HTML • Une dernière fonction permet de protéger ses sorties HTML. Au lieu de convertir les balises HTML en entités, elle les supprime simplement. strip_tags() prend en paramètres la chaîne à transformer et, optionnellement, une liste de balises HTML à autoriser. Cette fonction est très pratique, car elle vous permet de limiter les caractères HTML dans une variable envoyée par un utilisateur. Sur un forum, par exemple, vous pourriez n’autoriser que le gras et l’italique (<b> et <i>). <?php $texte ='<h1><a href="page.html">titre</a></h1>' ; echo "Texte brut : $texte "; echo "Texte protégé : "; echostrip_tags( $texte, '<h1><em><strong>' ) ; ?>

  25. Traitements de chaînes Conventions d’affichage locales • Certaines conventions d’affichage dépendent du pays. PHP sait gérer ces localisations et dispose pour cela d’une fonction qui vous permet d’adapter vos textes. • La fonction setlocale() permet d’initialiser la localisation à utiliser par la suite. <?php setlocale(LC_ALL, 'fr_FR@euro', 'fr_FR', 'FR', 'fr') ; ?>

  26. Traitements de chaînes Jeux de caractères • Les fonctions standards de traitements de chaînes de PHP ne contiennent aucune fonction pour traiter les jeux de caractères. Il vous faudra utiliser les modules iconv ou mbstring. Si vous n’utilisez que le français et l’anglais, le codage par défaut (ISO-8859-1) vous convient probablement. $chaine_utf = iconv('ISO-8859-1', 'UTF-8', $chaine_iso) ; $texte_iso = 'voilà une chaîne accentuée' ; $texte_utf = mb_convert_encoding($texte_iso,'ISO-8859-1','UTF-8');

  27. Traitements de chaînes Recherche d’une sous-chaîne • La fonction strstr() fonctionne de manière similaire à strpos() mais retourne le reste de la chaîne à partir de la position repérée, au lieu de la position elle-même. Elle a ses équivalents stristr() pour l’analyse sans prise en compte de la casse, et strrchr() pour l’analyse de droite à gauche. <?php strstr('eric.abcdef@dreams4net.com', '@') ; // Renvoie @dreams4net.com ?>

  28. Traitements de chaînes Récupérer une sous-chaîne • Il est possible de récupérer une sous-partie d’une chaîne de caractères si on en connaît la position. La fonction substr() prend en argument une chaîne de caractères référence, une position de départ et une longueur. Cette fonction renvoie les caractères à partir de la position initiale jusqu’à atteindre la longueur définie. <?php $texte = 'PHP 5 avancé' ; echosubstr($texte, 6, 2) ; // Renvoie av ?>

  29. Traitements de chaînes Remplacer un motif • La fonction str_replace() permet de remplacer un motif dans une chaîne. Le premier argument est la sous-chaîne à rechercher, le deuxième argument est la chaîne de remplacement, et le troisième est la chaîne de référence où faire le remplacement. <?php $texte = 'PHP 4 avancé' ; $cherche = '4' ; $remplace = '5' ; echostr_replace($cherche, $remplace, $texte) ; // Renvoie PHP 5 avancé <?php $texte = 'PHP 4 débutant' ; $cherche = array('4', 'débutant') ; $remplace = array('5', 'avancé') ; echostr_replace($cherche, $remplace, $texte) ; // Renvoie PHP 5 avancé ?>

  30. Traitements de chaînes Remplacer un motif • La fonction str_ireplace() fait la même opération, avec les mêmes paramètres, mais fera une recherche insensible à la casse des caractères. • Si vous ne connaissez pas la chaîne à remplacer mais sa position, vous pouvez utiliser la fonction substr_replace(). Elle prend en arguments la chaîne de référence, la chaîne de remplacement, et la position du premier caractère à remplacer. <?php $texte = 'PHP 4'; $position = strpos($texte, '4') ; $remplace = '5' ; echosubstr_replace($texte, $remplace, $position) ; // Renvoie PHP 5 ?>

  31. Traitements de chaînes Fonctions d’élagage • L’élagage est la procédure qui consiste à retirer les caractères blancs avant et après un texte, un peu comme les 0 avant un nombre. • La fonction trim() retire les caractères blancs avant et après la chaîne de référence. <?php $texte = ' PHP 5 avancé ' ; echostrlen($texte) ; // Renvoie 22 $texte = trim($texte) ; echostrlen($texte) ; // Renvoie 12, on a enlevé 10 espaces ?>

  32. Traitements de chaînes Fonctions d’élagage • rtrim() ne retire que les espaces à droite, ltrim() ceux de gauche. • Vous pouvez spécifier la liste des caractères à supprimer dans le second paramètre. Par défaut sont considérés comme caractères blancs : • l’espace normal (caractère ASCII 32) ; • la tabulation horizontale (ASCII 9) ; • le caractère de fin de ligne (ASCII 10) ; • le retour chariot (ASCII 13) ; • le caractère nul (ASCII 0) ; • et la tabulation verticale (ASCII 11).

  33. Traitements de chaînes Remplissage • L’opération inverse de l’élagage est le remplissage. La fonction str_pad() permet de compléter une chaîne jusqu’à une certaine longueur. • Par défaut, le remplissage se fait avec des espaces, vous pouvez définir un caractère différent ou même une suite de caractères, en les fournissant en troisième argument. • Le remplissage se fait naturellement sur la droite. Vous pouvez modifier ce comportement à l’aide du quatrième argument <?php // Donne un X et 9 espaces à droite str_pad('X', 10, STR_PAD_RIGHT) ; // Donne un X et 9 espaces à gauche str_pad('X', 10, STR_PAD_LEFT) ; ?>

  34. Traitements de chaînes Changement de casse • Le changement de casse est la transformation de caractères minuscules en majuscules ou inversement. Ces fonctions sont en général appelées juste avant l’affichage pour normaliser la présentation de données. On peut aussi s’en servir avant d’insérer des informations dans une base de données pour normaliser les enregistrements. • Les fonctions strtoupper() et strtolower() convertissent respectivement les chaînes de caractères en majuscules et minuscules. <?php $texte = 'Avec des MAJSCULES et minuscules'; echostrtoupper($texte); // Renvoie AVEC DES MAJUSCULES ET MINUSCULES echostrtolower($texte); // Renvoie avec des majuscules et minuscules ?>

  35. Traitements de chaînes Changement de casse • Les fonctions ucfirst() et ucwords() convertissent en majuscules respectivement le premier caractère de la chaîne et le premier caractère de chaque mot. <?php $texte = "avec des majuscules et minuscules" ; echoucfirst($texte) ; // Renvoie Avec des majuscules et minuscules echoucwords($texte) ; // Renvoie Avec Des Majuscules Et Minuscules ?>

  36. Traitements de chaînes Coupure de paragraphes • Dans le monde Web, on a souvent besoin de limiter la taille d’un texte et il est difficile de ne pas couper un mot en son milieu. Par exemple, pour mettre en avant le début d’une actualité mais en limitant le nombre de caractères à 50. • La fonction wordwrap() permet d’opérer cette coupure de manière automatisée, et en respectant l’intégrité des mots (pas de coupures au milieu d’un mot, il revient entièrement à la ligne). Si vous fournissez un deuxième argument à la fonction, il sera pris comme la longueur maximale du texte. Le troisième argument sert à changer le caractère de coupure. $texte = 'Avec des majuscules et minuscules' ; echowordwrap($texte,5) ; echowordwrap($tres_long_texte, 20, '<br>') ; // Utilise <br> comme séparateur

  37. Utilisation des tableaux Taille d’un tableau • La fonction count() compte le nombre d’éléments d’un tableau. <?php $a[0] = 1; $a[1] = 3; $a[2] = 5; $result = count($a); // $result == 3 $b[0] = 7; $b[5] = 9; $b[10] = 11; $result = count($b); // $result == 3; ?> <?php $tab[0] = 1; $tab[1] = 3; $tab[2] = 5; $result = count($tab); $i = 0; while ($i <= $result){ echo $tab[$i]; $i++; } // Affiche 135 ?>

  38. Utilisation des tableaux Présence dans le tableau • La fonction in_array() permet de savoir si un élément se trouve dans le tableau passé en argument. On peut également utiliser le dernier paramètre (optionnel) pour faire une vérification du type et s’assurer que l’élément cherché a bien le même type que l’élément trouvé ; <?php $caract = array ('jeune', 'beau', 'geek', 'drole'); print_r($caract); if (in_array('jeune', $caract)) { echo '<br>Trouvéjeune'; } if (in_array ('geek', $caract)) { echo '<br>Trouvé geek'; } ?>

  39. Utilisation des tableaux Recherche de la clé correspondante • La fonction in_array() ne vous informe que de la présence d’un élément. Vous pouvez aussi récupérer la clé correspondant à l’élément recherché via la fonction array_search(). Elle fonctionne de manière similaire à in_array() mais renvoie la clé correspondante comme valeur de retour. <?php $caract = array ('jeune', 'beau', 'geek', 'drole'); print_r($caract); $cle = array_search('beau', $caract) ; echo "La valeur 'beau' est à la clé $cle" ; // Affiche La valeur 'beau' est à la clé 1 ?>

  40. Utilisation des tableaux Nombre d’occurrences d’un élément • Vous pouvez chercher le nombre d’occurrences de chaque élément d’un tableau avec la fonction array_count_values(). Elle vous renverra un tableau associatif avec, pour chaque valeur, le nombre d’occurrences trouvées. <?php $tab = array('cyril', 'christophe', 'cyril', 'thomas', 'eric' ); $cpt = array_count_values($tab) ; echo "L'élément 'cyril' apparaît ", $cpt['cyril'], " fois.<br>"; print_r($tab); ?>

  41. Utilisation des tableaux Récupération aléatoire d’éléments • La fonction array_rand() permet de tirer au hasard un ou plusieurs éléments d’un tableau et de vous envoyer les clés associées. Elle prend en paramètres le tableau source et un nombre d’éléments à retourner. <?php $tab = array(1,2,3,4,5,6) ; $rand = array_rand($tab, 2) ; echo "Clés tirées au hasard : $rand[0] et $rand[1] <br>" ; echo 'Element 0 : ', $tab[$rand[0]], ' <br>' ; echo 'Element 1 : ', $tab[$rand[1]], ' <br>' ; ?>

  42. Utilisation des tableaux Tri par valeur • Les entrées d’un tableau sont ordonnées. Il vous arrivera donc probablement souvent de vouloir trier les différents éléments par leur valeur. Vous pouvez alors utiliser la fonction sort() en fournissant votre tableau en argument. Cette fonction ne renvoie rien et se contente de trier le tableau par ordre alphabétique. <?php $caract = array ('ROCHE','KDO','BOURDON','DANIEL','ACHOUR'); sort($caract) ; foreach($caract as $cle => $valeur) { echo "$cle - $valeur, " ; } ?>

  43. Utilisation des tableaux Tri en ordre inverse • Il est possible de faire un tri inverse (les valeurs les plus grandes se retrouveront en premières positions) via la fonction rsort(), qui fonctionne de manière identique à sort(). <?php $caract = array ('jeune', 'beau', 'geek', 'drole'); rsort($caract) ; foreach($caract as $cle => $valeur) { echo "$cle - $valeur, " ; } // Affiche 0 - jeune, 1 - geek, 2 - drole, 3 - beau, ?>

  44. Utilisation des tableaux Garder les associations clé-valeur • Les fonctions sort() et rsort() trient le tableau en redéfinissant les clés. Après conversion, le tableau sera indexé numériquement avec des index qui se suivent à partir de zéro. • Les fonctions asort() et arsort() sont en tous points identiques à ces premières, mais gardent les associations clé-valeur. Les différentes clés ne sont donc pas réécrites, seules les positions sont changées. <?php $caract = array ('jeune', 'beau', 'geek', 'drole'); asort($caract) ; foreach($caract as $cle => $valeur) { echo "$cle - $valeur, " ; } // Affiche 1 - beau, 3 - drole, 2 - geek, 0 - jeune, ?>

  45. Utilisation des tableaux Tri par clé • Les fonctions ksort() et krsort() sont identiques aux fonctions asort() et arsort(), si ce n’est que les tris se font en fonction des clés d’index et non des valeurs du tableau. <?php $caract = array ('jeune', 'beau', 'geek', 'drole'); asort($caract) ; foreach($caract as $cle => $valeur) { echo "$cle - $valeur, " ; } // Affiche 1 - beau, 3 - drole, 2 - geek, 0 - jeune, krsort($caract) ; foreach($caract as $cle => $valeur) { echo "$cle - $valeur, " ; } // Affiche 3 – drole, 2 – geek, 1 - beau, 0 - jeune, ?>

  46. Utilisation des tableaux Tri naturel • Les tris faits avec la fonction sort() sont des tris informatiques. La chaîne texte12 arrivera entre texte1 et texte2. Il est possible d’obtenir un tri plus humain avec la fonction natsort(). <?php $caract = array ('texte1', 'texte3', 'texte2', 'texte12'); sort($caract) ; foreach($caract as $valeur) { echo "$valeur, " ; } // Affiche texte1, texte12, texte2, texte3 natsort($caract) ; foreach($caract as $valeur) { echo "$valeur, " ; } // Ici, le 12 passe après le 2 // Affiche texte1, texte2, texte3, texte12 ?>

  47. Utilisation des tableaux Trier avec une fonction utilisateur • Il est possible de trier un tableau via une fonction utilisateur à l’aide de usort(). Il faut alors lui donner en arguments le tableau à trier et une fonction de comparaison. • La fonction de comparaison doit accepter deux valeurs en arguments et doit retourner un nombre inférieur, supérieur ou égal à zéro selon que la première valeur est inférieure, supérieure ou égale à la seconde. <?php // Tri par la taille de la chaîne de caractères functioncmp($a, $b) { if (strlen($a) < strlen($b)) { return -1 ; } elseif (strlen($a) == strlen($b)) { return 0 ; } else { return 1 ; } } $fruits[0] = 'citrons'; $fruits[1] = 'pommes'; $fruits[2] = 'abricots'; usort($fruits, 'cmp'); foreach($fruits as $cle => $valeur) { echo "$valeur, "; } // Affiche pommes, citrons, abricots ?>

  48. Utilisation des tableaux Tri multicritère • La fonction array_multisort() permet de trier un tableau sur plusieurs critères, généralement plusieurs colonnes. Elle prend en arguments un ou plusieurs tableaux. Ces différents tableaux sont triés en fonction des valeurs du premier tableau. En cas de valeurs identiques, ce sont les valeurs du deuxième tableau qui seront analysées, et ainsi de suite. Les associations clé-valeur sont sauvegardées. <?php $tab1 = array( 2, 6, 9, 6) ; $tab2 = array( 3, 2, 1, 8) ; array_multisort($tab1, $tab2) ; foreach($tab1 as $cle => $valeur) { echo "$cle-$valeur, "; } // Affiche 0-2,1-6,2-6,3-9, foreach($tab2 as $cle => $valeur) { echo "$cle-$valeur, "; } // Affiche 0-3,1-2,2-8,3-1

  49. Utilisation des tableaux Affecter des variables • Lorsqu’une fonction retourne un tableau, il est possible d’en récupérer les différents paramètres dans des variables en une opération. L’instruction list() prend en paramètres une liste de variables. Lors d’une affectation avec un tableau, la première variable se verra affecter la valeur de l’index 0 du tableau, la seconde se verra affecter la valeur de l’index 1, et ainsi de suite. <?php $tab = array(1, 2, 3, 4) ; list($a, $b, $c, $d) = $tab ; echo "$a-$b-$c-$d" ; // Affiche 1-2-3-4 ?> <?php $tab = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4) ; extract($tab) ; echo "$a-$b-$c-$d" ; // Affiche 1-2-3-4

  50. Utilisation des tableaux Sérialisation de tableaux • Il est possible de convertir facilement une chaîne de caractères en tableau et un tableau en chaîne de caractères à l’aide des fonctions explode() et implode(). • La fonction implode() prend en arguments une chaîne séparatrice et un tableau. La valeur de retour sera alors la concaténation de toutes les valeurs du tableau séparées par la chaîne séparatrice. • La fonction explode() fait l’opération inverse et divise une chaîne de caractères pour former un tableau à partir d’un séparateur : <?php $tab = array( 1 , 3 , 5 , 6 ) ; echo implode('*', $tab) ; // Affiche 1*3*5*6 ?> <?php $tab = array( 1 , 3 , 5 , 6 ) ; $chaine = implode('*', $tab) ; echo $chaine ; // Affiche 1*3*5*6 $tab = explode('*', $chaine) ; // On récupère le tableau d’origine ?>

More Related