Les fonctions permettent d'effectuer un traitement précis et de retourner un résultat. Elles évitent la répétition et rendent le code plus organisé. En PHP, on en a déjà utilisé sans forcément le réaliser : readline() et print_r() sont des fonctions. Pour explorer l'ensemble des fonctions disponibles, la documentation officielle reste la meilleure référence.
Lire la documentation
Avant de chercher à mémoriser toutes les fonctions PHP, il est plus utile de savoir lire la documentation. Chaque page de fonction suit toujours la même structure.
La signature
La signature est la carte d'identité d'une fonction. Elle indique en un coup d'œil comment l'utiliser :
- Ce qui précède le nom de la fonction est le type de retour (
stringici : la fonction renvoie une chaîne). - Entre parenthèses, on trouve les paramètres avec leur type et leur nom.
- Les paramètres entre crochets sont optionnels. On peut les omettre.
- Les trois points de suspension (
...) indiquent que la fonction accepte un nombre indéfini de paramètres. - Le type
mixedsignifie que le paramètre ou le retour peut être de plusieurs types différents. - Le type
voidindique que la fonction ne renvoie rien.
Trouver une fonction
Deux approches pour trouver la bonne fonction selon un besoin :
- Parcourir la référence des fonctions organisée par catégories (chaînes, tableaux, maths...).
- Faire une recherche sur un moteur de recherche, de préférence en anglais, en précisant le type et le langage. Par exemple :
reverse string PHPdonnera de meilleurs résultats queinverser chaîne PHP.
Fonctions utiles pour les chaînes
Inverser et mettre en minuscule
strrev() inverse une chaîne de caractères, et strtolower() la convertit en minuscules. On peut les combiner :
Longueur d'une chaîne
strlen() retourne la taille d'une chaîne :
Extraire une portion de chaîne
substr() retourne une partie d'une chaîne. On lui passe la chaîne, l'index de départ et le nombre de caractères souhaités :
On peut aussi accéder à un caractère directement comme dans un tableau :
Répéter une chaîne
str_repeat() répète une chaîne un nombre de fois donné :
Remplacer dans une chaîne
str_replace() cherche et remplace une valeur dans une chaîne. Elle accepte aussi des tableaux en paramètres pour effectuer plusieurs remplacements d'un coup :
Arrondir un nombre
round() arrondit un nombre à virgule flottante. Un second paramètre optionnel permet de préciser le nombre de décimales souhaité :
Fonctions utiles pour les tableaux
Somme et taille
array_sum() fait la somme des éléments d'un tableau. count() retourne le nombre d'éléments :
Déboguer une variable
var_dump() affiche le type et la valeur d'une variable, ce qui est pratique pour déboguer :
Contrairement à print_r(), var_dump() donne le type de chaque valeur. Son retour est void : il n'est pas possible de stocker son résultat dans une variable.
Passage par référence
Certaines fonctions modifient directement la variable qu'on leur passe, sans qu'on ait à récupérer leur retour. On le repère dans la signature par le signe & devant le paramètre.
Par exemple, array_push() ajoute un ou plusieurs éléments à un tableau et modifie la variable passée :
En revanche, array_reverse() ne modifie pas la variable d'origine : elle retourne un nouveau tableau :
sort() trie un tableau en place (passage par référence) et retourne un booléen indiquant le succès :
⚠️ Ces comportements différents peuvent surprendre. Il faut toujours vérifier la signature dans la documentation pour savoir si une fonction modifie la variable ou retourne un nouveau résultat.
Référence dans les assignations
Le même principe s'applique aux variables : par défaut, une assignation copie la valeur. Avec &, on crée une référence qui pointe vers la même valeur en mémoire.
Fonctions exit et die
exit() (ou son alias die()) interrompt immédiatement l'exécution du script. On peut lui passer un message à afficher :
Exemple pratique : filtre d'insultes
Pour illustrer la combinaison de plusieurs fonctions, voici un filtre qui remplace les gros mots par des astérisques, en conservant la première lettre de chaque mot censuré :
str_replace() accepte des tableaux en premier et second paramètre : elle effectue tous les remplacements en une seule fois, ce qui évite d'utiliser une boucle pour les remplacements.