MODULE 03
Tableaux & Chaînes
array_map, filter, reduce, manipulation de chaînes et expressions régulières.
1 Tableaux indexés
<?php
// Création
$fruits = ['pomme', 'banane', 'cerise'];
$vide = [];
// Ajout
$fruits[] = 'datte'; // en fin
array_push($fruits, 'figue'); // équivalent
array_unshift($fruits, 'abricot'); // en début
// Suppression
$dernier = array_pop($fruits); // retire et retourne le dernier
$premier = array_shift($fruits); // retire et retourne le premier
// Vérification
echo count($fruits); // nombre d'éléments
echo in_array('pomme', $fruits); // 1 (true)
// Tri
sort($fruits); // tri ascendant (réindexe les clés)
rsort($fruits); // tri descendant
shuffle($fruits); // mélange aléatoire
// Découper / fusionner
$tranche = array_slice($fruits, 1, 2); // sous-tableau
$fusion = array_merge($fruits, ['kiwi']); // fusion
2 Tableaux associatifs
<?php
$user = [
'nom' => 'Alice',
'age' => 30,
'ville' => 'Paris',
'roles' => ['admin', 'editor'],
];
// Accès
echo $user['nom']; // Alice
echo $user['roles'][0]; // admin
// Ajout / modification
$user['email'] = 'alice@example.com';
// Suppression
unset($user['ville']);
// Clés et valeurs
$cles = array_keys($user);
$valeurs = array_values($user);
// Vérifier l'existence
echo array_key_exists('nom', $user); // 1
echo isset($user['nom']); // 1 (mais false si null)
// Tri par valeur (asort) ou par clé (ksort)
asort($user); // trie par valeur, conserve les clés
ksort($user); // trie par clé
// Inverser clés ↔ valeurs
$inverse = array_flip(['a' => 1, 'b' => 2]); // [1=>'a', 2=>'b']
3 Tableaux multidimensionnels
<?php
$produits = [
['id' => 1, 'nom' => 'PHP Basics', 'prix' => 29.99, 'categorie' => 'livre'],
['id' => 2, 'nom' => 'Clavier Meca', 'prix' => 89.99, 'categorie' => 'hardware'],
['id' => 3, 'nom' => 'Clean Code', 'prix' => 34.99, 'categorie' => 'livre'],
];
// Parcourir
foreach ($produits as $prod) {
echo "{$prod['nom']} : {$prod['prix']}€\n";
}
// array_column — extraire une colonne
$noms = array_column($produits, 'nom');
$parId = array_column($produits, null, 'id'); // indexer par id
// Trier par prix avec usort
usort($produits, fn($a, $b) => $a['prix'] <=> $b['prix']);
4 Fonctions array_ essentielles
<?php
$nombres = [1, 2, 3, 4, 5, 6];
// array_map — transformer chaque élément (retourne un nouveau tableau)
$doubles = array_map(fn($n) => $n * 2, $nombres); // [2,4,6,8,10,12]
// array_filter — garder les éléments qui passent le test
$pairs = array_filter($nombres, fn($n) => $n % 2 === 0); // [1=>2, 3=>4, 5=>6]
$pairs = array_values($pairs); // réindexer : [0=>2, 1=>4, 2=>6]
// array_reduce — réduire à une seule valeur
$somme = array_reduce($nombres, fn($carry, $n) => $carry + $n, 0); // 21
$produit = array_reduce($nombres, fn($carry, $n) => $carry * $n, 1); // 720
// array_unique — supprimer les doublons
$unique = array_unique([1, 2, 2, 3, 3, 3]); // [0=>1, 1=>2, 3=>3]
// array_chunk — découper en sous-tableaux
$pages = array_chunk($nombres, 2); // [[1,2],[3,4],[5,6]]
// array_combine — associer clés et valeurs
$keys = ['a', 'b', 'c'];
$vals = [1, 2, 3];
$assoc = array_combine($keys, $vals); // ['a'=>1, 'b'=>2, 'c'=>3]
// array_search — trouver la clé d'une valeur
$cle = array_search(3, $nombres); // 2 (index)
// Trier par clé personnalisée avec usort
$users = [['age'=>30],['age'=>20],['age'=>25]];
usort($users, fn($a,$b) => $a['age'] <=> $b['age']); // du plus jeune au plus âgé
💡
array_map + array_filter + array_reduce sont les 3 piliers de la programmation fonctionnelle sur les tableaux. Maîtrisez-les !5 Manipulation de chaînes
<?php
$str = " Bonjour, Monde ! ";
// Nettoyage et casse
echo trim($str); // "Bonjour, Monde !"
echo strtolower($str); // " bonjour, monde ! "
echo strtoupper($str); // " BONJOUR, MONDE ! "
echo ucfirst("hello"); // "Hello"
echo ucwords("hello world"); // "Hello World"
// Recherche et remplacement
echo strpos("Bonjour", "jour"); // 3 (false si absent)
echo strrpos("abcabc", "b"); // 4 (dernière occurrence)
echo str_replace("Monde", "PHP", "Bonjour, Monde !"); // "Bonjour, PHP !"
echo str_ireplace("monde", "PHP", "Bonjour, Monde !"); // insensible à la casse
// Extraction
echo substr("Bonjour", 3, 4); // "jour"
echo strlen("Bonjour"); // 7
// Découper / assembler
$parts = explode(",", "a,b,c"); // ['a','b','c']
$str = implode(" - ", $parts); // "a - b - c"
// Formatage
echo sprintf("Prix : %.2f€", 9.9); // "Prix : 9.90€"
echo str_pad("42", 5, "0", STR_PAD_LEFT); // "00042"
echo number_format(1234567.89, 2, ',', ' '); // "1 234 567,89"
// Expressions régulières
preg_match('/^\d{4}-\d{2}-\d{2}$/', '2026-01-15', $matches); // date ISO
preg_match_all('/\d+/', 'abc123def456', $m); // $m[0] = ['123','456']
$clean = preg_replace('/[^a-z0-9]/i', '-', 'Hello World!'); // "Hello-World-"