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

如何用PHP根据ID将千万级文件按每万份归类到对应文件夹?

PHP实现按文件ID映射到对应文件夹的功能

需求说明

将1~10000000范围内的唯一文件ID,按每10000个ID为一组的规则,映射到对应文件夹(文件夹命名为该组起始值:0、10000、20000...9990000),具体映射规则:

  • ID 1~10000 → 文件夹0
  • ID 10001~20000 → 文件夹10000
  • ID 20001~30000 → 文件夹20000
  • ...以此类推

实现方案

核心通过整数除法向下取整计算ID所属分组的起始值,逻辑简单高效,适配千万级数据量。

PHP函数实现

/**
 * 根据文件ID获取对应文件夹数值
 * @param int $fileId 唯一文件ID(范围1~10000000)
 * @return int 对应文件夹数值
 */
function getFolderByFileId(int $fileId): int {
    $groupSize = 10000;
    // 减1后做整数除法,再乘以分组大小得到起始值
    return (int)(($fileId - 1) / $groupSize) * $groupSize;
}

// 测试示例
echo getFolderByFileId(5000) . PHP_EOL;      // 输出:0
echo getFolderByFileId(19000) . PHP_EOL;     // 输出:10000
echo getFolderByFileId(21000) . PHP_EOL;     // 输出:20000
echo getFolderByFileId(10000) . PHP_EOL;     // 输出:0
echo getFolderByFileId(10001) . PHP_EOL;     // 输出:10000
echo getFolderByFileId(10000000) . PHP_EOL;  // 输出:9990000

批量数据优化(数据库层面计算)

若文件ID存储在数据库中,可直接在SQL查询时计算文件夹值,减少PHP计算压力:

SELECT 
    file_id,
    FLOOR((file_id - 1)/10000) * 10000 AS folder
FROM your_file_table;

方案优势

  • 时间复杂度O(1),单条计算耗时极短,完全适配千万级数据处理
  • 逻辑简洁无复杂判断,维护成本低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:40:44