2017-07-03 57 views
-1

我的代码是:PHP的foreach功能全,并在列表中呼吁每10个按键的功能

$count=0; 
foreach($List AS $email){ 
$data = my_function($url); 
$count++; 
if(filter_var($email , FILTER_VALIDATE_EMAIL)){ 
............... 

my_function运行一个简单的卷曲一个URL,并返回session_idapi_identity的结果。如果我在列表中为列表中的每封邮件运行它,我的代码非常慢,需要时间来显示结果。

现在

$data = my_function($url); 

应用于每个电子邮件。

我的问题:

任何方式施加

$data = my_function($url); 

每10个邮件在整个名单

+0

那么,什么是您的实际问题吗? –

回答

0

如果我没有误解你的问题,你想要做的事每隔n迭代,这可以使用模运算符来完成:

$count = 1; 
foreach ($List as $email) 
{ 
    if ($count % 10 == 0) $data = my_function($url); 
    $count++; 
    ... 
} 

如果你d不知道x % y做什么,它只是返回表达式x/y的其余部分。因此,一个简单的技巧就是使用这样一个事实,即在评估x % n的不同值x = 1, 2, 3...时,相同的结果会每隔n次重复一次。

请注意,根据您的柜台开始时间,您将获得不同的开始电子邮件。如果您现在保留0,则将为第1,第11,第21,...电子邮件调用该函数。如果您像我一样将其更改为1,则函数将被调用的第一封电子邮件是第10封电子邮件。

+0

谢谢Max。你已经解决了我的问题 –

+0

没问题,很高兴解决了! – Max

0

您可以使用https://stackoverflow.com/a/44883380/7095134这个答案或通过使用计数器变量,你可以实现这一点。

e.g:

counter=0; 
for(i=0; i<=100; i++) 
{ 
    if(counter==10){ counter=0; call_your_function(); } 
    else { do the rest of work; counter++ ;} 

} 
+0

thx你Sucharitha你的帮助 –