Les fonctions de tableau PHP : le couteau suisse du dĂ©veloppeur đŸ› ïž

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 ? đŸ€”

  1. Code plus propre : Moins de variables temporaires
  2. Plus lisible : L’intention du code est claire
  3. Moins de bugs : Moins de logique manuelle = moins d’erreurs
  4. Performance : Ces fonctions sont optimisĂ©es en interne
  5. ImmutabilitĂ© : Les donnĂ©es originales ne sont pas modifiĂ©es

Pro Tips 🎯

Pour aller plus loin 🚀

D’autres fonctions utiles Ă  explorer :

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 !