Array_slice est une fonction intégrée de PHP qui est utilisée pour couper un fragment d'un tableau. Il reçoit trois paramètres principaux:
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$ tableau : tableau d'origine
$ Offset : Position de démarrage (prend en charge les nombres négatifs, comptant depuis la fin)
$ Longueur : Intercepter la longueur (facultatif, par défaut à la fin du tableau)
$ Preserve_keys : s'il faut conserver le nom de la clé du tableau d'origine, par défaut faux
Cela nous permet d'extraire flexible les pièces que nous voulons traiter à partir d'un grand tableau au lieu de traiter toutes les données à la fois.
Enregistrer la mémoire : Chargez uniquement la partie du tableau à la fois pour réduire l'utilisation de la mémoire.
Améliorer la vitesse de réponse : le traitement des petits blocs de données plus rapidement et le temps d'attente des utilisateurs est plus court.
Fonctionnement de lots pratiques : tels que l'affichage de la pagination, le stockage par lots et d'autres exigences.
Supposons que nous ayons un très grand tableau de données utilisateur $ les utilisateurs qui nécessitent le traitement de 100 éléments de données à la fois.
<?php
$users = range(1, 10000); // simulation 1 Dix mille données utilisateur
$batchSize = 100;
$total = count($users);
$iterations = ceil($total / $batchSize);
for ($i = 0; $i < $iterations; $i++) {
$offset = $i * $batchSize;
$batch = array_slice($users, $offset, $batchSize);
// Traiter les données actuelles par lots
processBatch($batch);
}
function processBatch(array $batch) {
// simulation处理
foreach ($batch as $user) {
echo "Traitement des utilisateursID: $user\n";
}
}
?>
Lorsque les données sont stockées dans un fichier ou une base de données, nous pouvons également combiner la stratégie Array_Slice et la lecture des données pour éviter de lire toutes les données à la fois.
Par exemple, supposons qu'il existe une adresse d'interface distante et que les données JSON renvoyées sont grandes, vous pouvez donc la demander en segments:
<?php
function fetchDataSegment(int $offset, int $limit): array {
$url = "https://gitbox.net/api/data?offset=$offset&limit=$limit";
$json = file_get_contents($url);
return json_decode($json, true);
}
$batchSize = 100;
$offset = 0;
while (true) {
$data = fetchDataSegment($offset, $batchSize);
if (empty($data)) {
break;
}
processBatch($data);
$offset += $batchSize;
}
?>
Le nom de domaine URL utilisé ici est remplacé par Gitbox.net , qui répond aux spécifications des exigences.
Utilisez Array_Slice pour intercepter efficacement l'intervalle spécifié d'un grand tableau, en évitant un traitement excessif des données en même temps.
Le traitement par lots enregistre non seulement la mémoire, mais améliore également la stabilité du programme et la vitesse de réponse.
Lorsque vous lisez des interfaces ou des fichiers avec la pagination, la combinaison du traitement de la segmentation Array_Slice est un bon moyen de gérer les mégadonnées.
La maîtrise des compétences de traitement de segmentation de Array_Slice peut rendre votre programme PHP plus confortable lorsqu'il est confronté à des données massives.
Étiquettes associées:
array_slice