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

PHP双层for循环需求:1990-2019年每年重复执行脚本5次

解决思路与修正后的代码

嘿,我看你已经搭好了双层循环的框架,不过原代码里有几个细节问题需要调整,才能完美实现「1990年到2019年,每个年份重复执行脚本5次」的需求。我帮你梳理一下并修正代码:

先指出原代码的几个小问题:

  • 外层循环的条件里用了逗号($i<2019,$i++),PHP里循环条件应该用分号分隔,这会直接导致语法错误;
  • 外层循环写的是$i<2019,这样只会遍历到2018年,如果要包含2019年,得改成$i<=2019;
  • 内层循环$j<5只会执行4次(j=1、2、3、4),要执行5次的话,应该改成$j<=5或者$j<6;
  • 你的API请求里没有传入年份参数$i,这样每次请求的都是同一个接口数据,应该把年份拼到API地址里,才能获取对应年份的内容。

修正后的完整代码

// 初始化存储结果的变量,避免Undefined变量警告
$filmovi = '';

// 外层循环:遍历1990到2019年(包含2019)
for ($i = 1990; $i <= 2019; $i++) {
    // 内层循环:每个年份重复执行5次
    for ($j = 1; $j <= 5; $j++) {
        // 把当前年份$i拼到API地址里,确保每次请求对应年份的数据
        $filmApiUrl = "https://your-api-endpoint.com?year={$i}";
        // 请求API数据
        $sve = file_get_contents($filmApiUrl);
        
        // 处理API返回的JSON数据,第二个参数设为true转成关联数组,更易处理
        $data = json_decode($sve, true);
        
        // 遍历结果集,拼接标题(先判断结果是否存在,避免报错)
        if (!empty($data['results'])) {
            foreach ($data['results'] as $value) {
                $filmovi .= $value['title'] . ",";
            }
        }
    }
}

// 最后可以去掉末尾多余的逗号(可选优化)
$filmovi = rtrim($filmovi, ',');

额外的实用建议:

  • API请求限制:频繁请求API可能会触发对方的频率限制,建议在每次请求后加个短暂延迟,比如sleep(1);(暂停1秒);
  • 错误处理:file_get_contents可能会请求失败,建议加上错误捕获,比如检查$sve是否为false,或者用try-catch包裹请求逻辑;
  • 内存优化:如果数据量很大,$filmovi会持续占用内存,可考虑每次循环后把数据写入本地文件,而不是一直存在内存里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:45:35