PHP在Foreach循环中运行Curl函数

PHP在Foreach循环中运行Curl函数,php,curl,foreach,Php,Curl,Foreach,我必须发送短信的倍数为150批每个卷曲后。这是我的密码 $mobiles = "9844700001,9844700002,9844700003,9844700004;9844700005 9844700006,9844700007,9844700008,9844700009,9844700010,.... upto 1000 numbers" $rmobiles = preg_split('/[\ \n\r\;\:\,]+/', $mobiles, -1, PREG_SPLIT_NO_EMP

我必须发送短信的倍数为150批每个卷曲后。这是我的密码

$mobiles = "9844700001,9844700002,9844700003,9844700004;9844700005
 9844700006,9844700007,9844700008,9844700009,9844700010,.... upto 1000 numbers"
$rmobiles = preg_split('/[\ \n\r\;\:\,]+/', $mobiles, -1, PREG_SPLIT_NO_EMPTY);
if(count($rmobiles) <= 1000){
    foreach($rmobiles as $key => $value){
        if ($key % 150 == 0) {
            //Generate a new random ID
            $randno = rand(0,10000);
        }
        $this->addtoDB("00000", $value, $randno);
    } 
    return $this->sendmsms($randno);
} else {
    echo "error, max 1000";
}
编辑2 我甚至试着为randno创建数组。但只有第一批,而不是全部7批

    $arr = array();
    foreach($rmobiles as $key => $value){
        if ($key % 150 == 0) {
            //Generate a new random ID
            $randno = rand(0,10000);
            $arr[] = $randno;
        }
        $this->addtoDB("00000", $value, $randno);
    }
    foreach($arr as $k => $v){
        return $this->sendmsms($v);
    }

当我回显它时,它会完美地显示出来,但通过DB它只运行了一批。原因可能是什么?

想到的一个解决方案是使用将$rmobiles拆分为多个数组,每个数组最多包含150个元素。不确定sendmsms函数是采用字符串还是数组,但类似的操作可能会使您走上正确的道路:

$mobiles = "9844700001,9844700002,9844700003,9844700004;...";
$rmobiles = preg_split('/[\ \n\r\;\:\,]+/', $mobiles, -1, PREG_SPLIT_NO_EMPTY);
foreach (array_chunk($rmobiles, 150) as $batch) {
    $this->sendmsms(implode(',',$batch));
}

如果$key?未链接到,则将sendmsms移动到;请阅读标签信息!好的观点,我曾经认为但想在这里得到专家的答案,会尝试更新,thanks@aschipfl对不起,我一定是点击了SO.u_mulder推荐的所有标签,因为我需要返回sendmsms函数,一旦它返回,addtoDB函数就不会运行。我必须在addtoDB函数之后运行该函数。我将在使用if$key%150添加TODB后重试,方法是重复。这样行吗?不行,因为它必须经过所有db插入、添加/借记余额、更新提供商响应,给定的解决方案不会有多大帮助。编辑了我的问题,我编辑的try应该有什么问题?好的,终于解决了。在我的第二次尝试中,我使用了return,因此它交付了第一批或最后一批。我后来在看了你的代码后意识到我一直在使用return。谢谢你。既然你的回答暗示了我正确的道路,我就接受你的回答。如果您还可以更新结果,其他人应该会受益。再次感谢。
$mobiles = "9844700001,9844700002,9844700003,9844700004;...";
$rmobiles = preg_split('/[\ \n\r\;\:\,]+/', $mobiles, -1, PREG_SPLIT_NO_EMPTY);
foreach (array_chunk($rmobiles, 150) as $batch) {
    $this->sendmsms(implode(',',$batch));
}