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 サイトの他の関連記事を参照してください。