【问题标题】:PHP & Laravel: Getting for the Nth position array in an array of arrays, in multiples of NPHP&Laravel:获取数组数组中的第N个位置数组,N的倍数
【发布时间】:2021-11-06 14:29:16
【问题描述】:

我有一个应用折扣的任务,从订阅之初开始,客户每 10 个订单,数据都来自 Laravel 之外的 API 调用。

例如

[
 [
   order_id: xxxxx,
   details: [
   ],
   customer_id: xxxxx
 ],
 [
   order_id: xxxxx,
   details: [
   ],
   customer_id: xxxxx
 ],
]

订单被计入计数的标准是状态为成功。我所做的是遍历所有状态为 SUCCESS 的订单,并从 1 开始创建一个计数器,如果计数器达到 10,我将再次将计数器重置为开始,直到我遍历所有订单并记录的最后一个数字是客户当前的第 N 个订单,因此如果当前的第 N 个订单是 9,则后续订单将应用折扣。

但这似乎效率低下,如果客户有很多订单,代码将花费时间循环并遍历所有订单,以获取客户当前的第 N 个订单位置。有没有一个公式可以得到当前的第 N 阶位置是什么?或者我可以使用集合,将数组按 10 分块并获取最后一组,然后从那里循环它们以获得最新订单的第 N 个位置?任何意见,将不胜感激。谢谢。

【问题讨论】:

  • 第一步是点击 API 以获得成功的订单?

标签: javascript php arrays laravel


【解决方案1】:

由于不在数据库中而是在 api 响应中进行编辑。

$applicable_for_discount = collect($data)->filter(function ($item) {
        return $item['successful'];
})->chunk(9)->last()->count() === 9;

【讨论】:

  • 非常感谢。但是数据不是来自数据库,而是来自 API。此外,我必须在处理付款之前将其应用于第 10 个订单,也就是说,我必须记下第 9 个成功的订单并为下一个排队的订单应用折扣。
  • @Drew 更新了我的答案。
  • @Drew 你说循环需要很长时间。你不是吗?仅供参考,filter 不是魔术,而是相同的包装。
  • 是的,他还说他从 API 获得响应,数据库会更有效率。
猜你喜欢
  • 1970-01-01
  • 2013-02-21
  • 2011-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
相关资源
最近更新 更多