繁体   English   中英

如何简化可以运行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循环很容易:

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

测试一下并进行更改,直到适合为止。

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

1 2 3 4 5

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

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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM