Pendant le développement de PHP, nous devons souvent traiter certains éléments dans un tableau au lieu de traverser l'ensemble du tableau. Pour y parvenir, Array_Slice et Array_Map sont deux fonctions très utiles. Cet article expliquera en détail comment les utiliser en combinaison pour permettre un traitement efficace d'une partie d'un tableau et l'illustrer avec des exemples de code réels.
Array_slice est une fonction fournie par PHP pour extraire un sous-tableau d'un tableau sans modifier le tableau d'origine. La syntaxe de base est la suivante:
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$ Array : le tableau d'origine à fonctionner.
$ Offset : le décalage de départ, qui peut être un nombre négatif pour indiquer à partir de la queue.
$ Longueur : le nombre d'éléments à extraire, s'il est omis, il sera extrait à la fin du tableau.
$ Preserve_keys : s'il faut préserver le nom clé du tableau d'origine.
Array_map est utilisé pour agir sur chaque élément du tableau et renvoyer le nouveau tableau traité. La syntaxe de base est la suivante:
array_map(callable $callback, array $array): array
Il iratera à travers l'ensemble du tableau, passera chaque élément comme argument à la fonction de rappel et renverra le résultat en tant que nouveau tableau.
Lors du traitement de grandes tableaux, si nous ne nous soucions qu'une partie des données (telles que la pagination, le traitement conditionnel, etc.), nous utilisons d'abord Array_slice pour extraire la pièce cible, puis utilisons Array_map pour le traiter, ce qui n'est pas seulement clair dans la logique, mais a également de meilleures performances.
Supposons que nous ayons une gamme de produits, chaque produit est un tableau associatif, nous devons seulement traiter les noms des 5 premiers produits et ajouter un préfixe uniformément:
<?php
$products = [
['id' => 1, 'name' => 'ordinateur'],
['id' => 2, 'name' => 'téléphone portable'],
['id' => 3, 'name' => 'écouteur'],
['id' => 4, 'name' => 'souris'],
['id' => 5, 'name' => 'clavier'],
['id' => 6, 'name' => 'moniteur'],
];
// Avant de le retirer 5 Un produit
$firstFive = array_slice($products, 0, 5);
// Préfixer le nom“recommander:”
$processed = array_map(function($product) {
$product['name'] = 'recommander:' . $product['name'];
return $product;
}, $firstFive);
// Résultat de sortie
foreach ($processed as $item) {
echo $item['id'] . ' - ' . $item['name'] . PHP_EOL;
}
Le résultat de la sortie est:
1 - recommander:ordinateur
2 - recommander:téléphone portable
3 - recommander:écouteur
4 - recommander:souris
5 - recommander:clavier
Cette méthode est particulièrement courante dans le développement d'interface, comme dans une interface API qui renvoie une liste d'utilisateurs:
<?php
// Simuler pour obtenir des données utilisateur(Peut provenir de la base de données)
$users = [
['id' => 101, 'email' => '[email protected]'],
['id' => 102, 'email' => '[email protected]'],
['id' => 103, 'email' => '[email protected]'],
['id' => 104, 'email' => '[email protected]'],
['id' => 105, 'email' => '[email protected]'],
['id' => 106, 'email' => '[email protected]'],
];
// Supposons que les paramètres de pagination sont affichés par page 3 bande,Actuellement le premier 2 Page
$page = 2;
$pageSize = 3;
$offset = ($page - 1) * $pageSize;
// 分Page获取当前Page的数据
$pagedUsers = array_slice($users, $offset, $pageSize);
// Format l'adresse e-mail en minuscules
$formatted = array_map(function($user) {
$user['email'] = strtolower($user['email']);
return $user;
}, $pagedUsers);
// JSON Sortir
header('Content-Type: application/json');
echo json_encode($formatted);
Le résultat de retour sera:
[
{"id":104,"email":"[email protected]"},
{"id":105,"email":"[email protected]"},
{"id":106,"email":"[email protected]"}
]
Les principaux avantages de l'utilisation de Array_slice et Array_Map sont:
Évitez les calculs inutiles : traitez uniquement la partie des données dont vous avez besoin.
Séparation logique : les étapes du filtrage des données et du traitement des données sont claires et claires, et le code est très lisible.
Solide maintenabilité : pratique pour étendre la logique à l'avenir, comme la modification de la pagination ou du traitement de la logique.
Lors du traitement de grandes quantités de données, l'utilisation de Array_Slice et Array_Map peut raisonnablement améliorer les performances, mais aussi rendre le code plus concis et plus facile à comprendre. Que ce soit dans le système de gestion des antécédents, l'interface de données ou dans la logique commerciale réelle, ce modèle mérite d'être appris et appliqué.