簡體   English   中英

PHP在Foreach循環中運行卷曲函數

[英]PHP Run a Curl Function in Foreach Loop

我必須以每個CURL帖子150批的倍數發送SMS。 這是我的代碼,

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

由於sendmsms函數位於foreach循環之外,因此它只發送最后一批帶有隨機數的代碼,如果我在sendmsms循環中包含sendmsms函數,則該函數將運行與那里存在的所有手機號碼相同的代碼。

我應該如何能夠基於生成的randno運行sendmsms函數,以便我的curl函數sendmsms能夠正確運行並真正生成db記錄。

編輯

我再次嘗試這樣,但是它在我的數據庫中插入了一條記錄。

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

編輯2

我什至嘗試為randno創建數組。 但是只有第一批,而不是所有的七批。

    $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只能顯示1批。 可能是什么原因?

我想到的一種解決方案是使用array_chunk()將$ 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));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM