ホームページ >バックエンド開発 >PHPチュートリアル >Laravel'の連続データを抽出します

Laravel'の連続データを抽出します

百草
百草オリジナル
2025-03-06 01:34:13833ブラウズ

Extracting Sequential Data with Laravel's takeWhile

LaravelのtakeWhileメソッドは、収集フィルタリングを正確に制御します。 特定の条件を満たす連続した要素を抽出し、条件に失敗した最初の要素で停止します。

この例は、コレクションから上昇数の抽出を示しています:

$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]
これが実用的なアプリケーションです:注文処理ステータスの追跡。

<?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);
    }
}

は、シーケンシャルデータの処理に最適です。特に、ステータスの更新、シーケンスの検証、またはデータの傾向の分析に役立ちます。 この方法は、このようなシナリオを管理するための簡潔で効率的な方法を提供します。

以上がLaravel&#039;の連続データを抽出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。