Les fonctions de tableau PHP : le couteau suisse du dĂ©veloppeur đ ïž
Tu passes encore ton temps à écrire des boucles foreach ? Stop ! PHP possÚde une collection impressionnante de fonctions de tableau qui vont révolutionner ta façon de coder.
Plongeons dans les plus utiles !
Les 3 mousquetaires : map, filter et reduce đ€ș
array_map() : transformer chaque élément
$users = [ ['name' => 'Alice', 'age' => 25], ['name' => 'Bob', 'age' => 30], ]; // â Avant (avec foreach) $names = []; foreach ($users as $user) { $names[] = $user['name']; } // â AprĂšs (avec array_map) $names = array_map(fn($user) => $user['name'], $users); // RĂ©sultat : ['Alice', 'Bob']
array_filter() : filtrer les éléments
$numbers = array( 1, 2, 3, 4, 5, 6 ); // â Avant (avec foreach) $evenNumbers = array(); foreach ( $numbers as $number ) { if ( $number % 2 === 0 ) { $evenNumbers[] = $number; } } // rĂ©sultat : [2, 4, 6] // â AprĂšs (avec array_filter) $evenNumbers = array_filter( $numbers, fn( $n ) => $n % 2 === 0 ); // RĂ©sultat : [2, 4, 6]
array_reduce() : accumuler des valeurs
$cart = array( array( 'product' => 'Laptop', 'price' => 999, ), array( 'product' => 'Mouse', 'price' => 29, ), ); // â Avant (avec foreach) $total = 0; foreach ( $cart as $item ) { $total += $item['price']; } // RĂ©sultat : 1028 // â AprĂšs (avec array_reduce) $total = array_reduce( $cart, fn( $sum, $item ) => $sum + $item['price'], 0 ); // RĂ©sultat : 1028
Les fonctions utilitaires indispensables đ§
array_column() : extraire une colonne
$users = array( array( 'id' => 1, 'name' => 'Alice', 'role' => 'admin', ), array( 'id' => 2, 'name' => 'Bob', 'role' => 'user', ), ); // â Avant (avec foreach) $names = array(); foreach ( $users as $user ) { if ( $user['role'] === 'admin' ) { $names[] = $user['name']; } } // RĂ©sultat : ['Alice', 'Bob'] // â AprĂšs (avec array_column) // Extraire tous les noms $names = array_column( $users, 'name' ); // RĂ©sultat : ['Alice', 'Bob'] // â Avant (avec foreach) $usersByIds = array(); foreach ( $users as $user ) { $usersByIds[ $user['id'] ] = $user; } // RĂ©sultat : [1 => ['id' => 1, ...], 2 => ['id' => 2, ...]] // â AprĂšs (avec array_column) $usersByIds = array_column( $users, null, 'id' ); // RĂ©sultat : [1 => ['id' => 1, ...], 2 => ['id' => 2, ...]]
array_chunk() : découper un tableau
$items = array( 1, 2, 3, 4, 5, 6, 7 ); // â Avant (avec foreach) $chunks = array(); foreach ( $items as $item ) { if ( count( $chunks ) === 0 || count( $chunks[ count( $chunks ) - 1 ] ) === 3 ) { $chunks[] = array(); } $chunks[ count( $chunks ) - 1 ][] = $item; } // RĂ©sultat : [[1, 2, 3], [4, 5, 6], [7]] // â AprĂšs (avec array_chunk) $chunks = array_chunk( $items, 3 ); // RĂ©sultat : [[1, 2, 3], [4, 5, 6], [7]]
Combinaisons puissantes đȘ
La vraie magie opĂšre quand on combine ces fonctions :
$users = array( array( 'name' => 'Alice', 'age' => 25, 'active' => true, ), array( 'name' => 'Bob', 'age' => 30, 'active' => false, ), array( 'name' => 'Charlie', 'age' => 35, 'active' => true, ), ); // Obtenir la moyenne d'Ăąge des utilisateurs actifs $averageAge = array_reduce( array_filter( $users, fn( $user ) => $user['active'] ), fn( $sum, $user ) => $sum + $user['age'], 0 ) / count( array_filter( $users, fn( $user ) => $user['active'] ) ); // RĂ©sultat : 30 // Obtenir un tableau name => age pour les utilisateurs actifs $activeUsersAges = array_column( array_filter( $users, fn( $user ) => $user['active'] ), 'age', 'name' ); // RĂ©sultat : ['Alice' => 25, 'Charlie' => 35]
Pourquoi utiliser ces fonctions ? đ€
- Code plus propre : Moins de variables temporaires
- Plus lisible : L’intention du code est claire
- Moins de bugs : Moins de logique manuelle = moins d’erreurs
- Performance : Ces fonctions sont optimisées en interne
- Immutabilité : Les données originales ne sont pas modifiées
Pro Tips đŻ
- Utilise les arrow functions (PHP 7.4+) pour des callbacks plus concis
- Combine les fonctions pour des manipulations complexes
- N’oublie pas que ces fonctions crĂ©ent de nouveaux tableaux (important pour la mĂ©moire)
- PréfÚre array_column() à array_map() quand tu veux juste extraire une colonne
Pour aller plus loin đ
D’autres fonctions utiles Ă explorer :
- array_merge()
- array_unique()
- array_intersect()
- array_diff()
- array_keys() et array_values()
La prochaine fois que tu t’apprĂȘtes Ă Ă©crire une boucle foreach, demande-toi si une de ces fonctions ne pourrait pas faire le travail plus Ă©lĂ©gamment !