簡體   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