如何简化可以运行 1 次、5 次或 100 次的 PHP 代码


How do I simplify PHP code that can run 1 or 5 or 100 times?

我有一个PHP代码,可以根据我像这样设置的变量运行多次:

$pages = '2';

其余代码是这样的(实际上最多 10 个,但我只是在这里写了每个代码的前 3 个):

// STEP 1
unlink('merge1.json');
unlink('merge2.json');
unlink('merge3.json');
// STEP 2
$url_one = 'https://xxx.yyy.zzz/?offset=0';
$url_two = 'https://xxx.yyy.zzz/?offset=100';
$url_three = 'https://xxx.yyy.zzz/?offset=200';
// STEP 3
if ($pages >= '1'){
$grab_one = grab_file($url_one,'/home/dir/merge1.json');
}
if ($pages >= '2'){
$grab_two = grab_file($url_two,'/home/dir/merge2.json');
}
if ($pages >= '3'){
$grab_three = grab_file($url_three,'/home/dir/merge3.json');
}
// STEP 4
$one = json_decode(file_get_contents('merge1.json'));
$two = json_decode(file_get_contents('merge2.json'));
$three = json_decode(file_get_contents('merge3.json'));
// STEP 5
if ($pages == '1'){
    $merge = (array)$one->results;
}
if ($pages == '2'){
    $merge = array_interlace((array)$one->results,(array)$two->results);
}
if ($pages == '3'){
    $merge = array_interlace((array)$one->results,(array)$two->results,(array)$three->results);
}

在这种情况下,它将运行 2 次。

只要我必须做 5 页甚至 10 页,

这对我来说效果很好,但现在我可能不得不运行它 50 或 100 页,并且必须为每页再次编写代码似乎有点过分,可能必须为每页编写代码 100 次。

有什么简单的方法可以实现这一点吗?

for 循环将允许您针对每个数字运行每行代码一次,

在下面的示例中,"$i"将包含数字"1",然后是"2",然后是"3",一直到最大值(50、100 等)

现在这超出了我的头顶,我还没有测试过它,但这是一个起点。

$pervious_merge;
for ($i = 1; $i<=maximum_value; $i++){
    unlink('merge'.$i.'.json');
    $url = 'https://xxx.yyy.zzz/?offset='.$i*100;
    if ($pages >= $i){
        $grab = grab_file($url,'/home/dir/merge'.$i.'.json');
    }
    $decode = json_decode(file_get_contents('merge'.$i.'.json'));
    if ($pages == $i){
        $merge = array_interlace($previous_merge, (array)$decode->results);
        $previous_merge = $merge;
    }
}

使用 for 循环很容易:

for ($i = 1; $i <= $pages;$i++){
// your code
echo $i;
};

测试它并更改它,直到它适合。

如果 $pages = 5,则它将回显:

1 2 3 4 5

它将从 1 开始,直到达到 $i = 5。