You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何从指定值开始循环复用小数组填充定长目标数组

循环复用源数组生成指定长度定序数组

核心需求

  • 基于已有源数组 $list_order_id,生成元素总数由 $vacancies 定义的结果数组
  • 源数组长度不足时,循环复用源数组元素填充到目标长度
  • 结果数组的起始元素,必须是预定义值 $last_id 在源数组中紧邻的下一个值

示例参数与预期输出

给定初始代码:

$vacancies = 13;
$list_order_id = [1, 5, 6, 9, 10];
$last_id = 6; // 对应起始值为9

$arrayOrder = [];
for ($i = 0; $i < $vacancies; $i++) {
    // 待实现逻辑
}

预期输出结果:

[9, 10, 1, 5, 6, 9, 10, 1, 5, 6, 9, 10, 1]

实现方案

核心逻辑是先定位起始取数位置,再通过取模运算自动处理循环复用的逻辑,不需要手动拼接旋转数组,代码简洁且适配任意长度的源数组和填充数量:

$vacancies = 13;
$list_order_id = [1, 5, 6, 9, 10];
$last_id = 6;

$arrayOrder = [];
// 查找$last_id在源数组中的索引
$startPos = array_search($last_id, $list_order_id);
// 起始取数偏移为索引+1
$offset = $startPos + 1;
$sourceLen = count($list_order_id);

for ($i = 0; $i < $vacancies; $i++) {
    // 取模运算自动处理越界后回到数组头部的循环逻辑
    $currentPos = ($offset + $i) % $sourceLen;
    $arrayOrder[] = $list_order_id[$currentPos];
}

说明:如果$last_id是源数组的最后一个元素,取模运算会自动将取数位置定位到数组第一个元素,完全符合循环复用的要求。

内容的提问来源于stack exchange,提问作者Anderson Mora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:45:33