#php #arrays
#php #массивы
Вопрос:
Я передаю $instance в функцию call_user_func_array и SendBatchSms, однако в $response используется только последний токен $ в цикле, расширение цикла работает хорошо, но медленно, как я могу передать $ instance в функцию call_user_func_array со всеми значениями цикла, а не с последним. Я новичок в php
foreach($result as $row){
$token = $row['token'];
$version = "v1"; //DONT change unless you are using a different version
$instance = new BongaTech($token, $version);
$list[] = new Sms($sender, $phone, $message, $correlator, null, $endpoint);
}
// $list = null;
if($list !== null){
$row_chunks = array_chunk($list, 100);
////////here we have 100 messages on each chunk
///////Loop through the messages in side the chunk
foreach ($row_chunks as $sms){
$response = call_user_func_array(array($instance, "sendBatchSMS"), $sms);
$response = json_encode($response, true);
$results = json_decode($response, true);
print_r($response);
}
Комментарии:
1. они не должны
$response = call_user_func_array...
находиться в цикле? иначе $instance будет последним, для чего нужен $ list, разве это не должно быть $ sms?2. и почему вы кодируете только для декодирования в следующей строке
3. Если я помещаю $response в цикл, он зацикливает функцию, а не $ list, поэтому требуется больше времени, SendBatchsms должна отправлять 100 вызовов на запрос
4. Пожалуйста, проверьте, я внес некоторые изменения
Ответ №1:
КАК вы видите, экземпляр меняется для каждого цикла. следовательно, у вас будет несколько ответов. Попробуйте создать массив ответов, как показано ниже: ПРИМЕЧАНИЕ: Я предполагаю, что $ list [] — это набор SMS в этом решении.
foreach($result as $row)
{
$token = $row['token'];
$version = "v1"; //DONT change unless you are using a different version
$instance = new BongaTech($token, $version);
$sms = new Sms($sender, $phone, $message, $correlator, null, $endpoint);
$response[] = call_user_func_array(array($instance, "sendBatchSMS"), $sms);
}
$response = json_encode($response, true);
print_r($response);