laravel's 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提取顺序数据的详细内容。更多信息请关注PHP中文网其他相关文章!