首頁 >後端開發 >php教程 >用Laravel提取順序數據

用Laravel提取順序數據

百草
百草原創
2025-03-06 01:34:13836瀏覽

Extracting Sequential Data with Laravel's takeWhile

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn