Maison >développement back-end >tutoriel php >Extraction de données séquentielles avec la prise de Laravel

Extraction de données séquentielles avec la prise de Laravel

百草
百草original
2025-03-06 01:34:13836parcourir

Extracting Sequential Data with Laravel's takeWhile

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn