Maison >développement back-end >tutoriel php >Extraction de données séquentielles avec la prise de Laravel
La méthode takeWhile
de Laravel offre un contrôle précis sur le filtrage de collecte. Il extrait des éléments consécutifs satisfaisant une condition donnée, s'arrêtant au premier élément qui échoue à la condition.
Cet exemple démontre l'extraction des nombres ascendants d'une collection:
$numbers = collect([1, 2, 3, 4, 2, 1]); $ascending = $numbers->takeWhile(function ($number, $key) use ($numbers) { return $key === 0 || $number > $numbers[$key - 1]; }); // Result: [1, 2, 3, 4]
Voici une application pratique: le statut de traitement des commandes de suivi.
<?php namespace App\Services; use App\Models\Order; use App\Models\OrderStatus; use Illuminate\Support\Collection; class OrderProcessingService { public function getSuccessfulSteps(Order $order): Collection { return $order->statusUpdates() ->oldest() ->get() ->takeWhile(fn (OrderStatus $status) => $status->successful) ->map(fn (OrderStatus $status) => [ 'step' => $status->step_name, 'completed_at' => $status->created_at->format('Y-m-d H:i:s'), 'processor' => $status->processor_name ]); } public function validateProcessingSequence(Collection $steps): bool { $requiredOrder = ['payment', 'inventory', 'packaging', 'shipping']; $currentStep = 0; return $steps->takeWhile(fn ($step) use ($requiredOrder, &$currentStep) => $step['type'] === ($requiredOrder[$currentStep++] ?? null))->count() === count($requiredOrder); } }
takeWhile
est idéal pour gérer les données séquentielles, particulièrement utiles pour le traitement des mises à jour d'état, la validation des séquences ou l'analyse des tendances de données. La méthode fournit un moyen concis et efficace de gérer de tels scénarios.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!