首页 > 后端开发 > php教程 > 用Laravel提取顺序数据

用Laravel提取顺序数据

百草
发布: 2025-03-06 01:34:13
原创
830 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板