Как передать все значения вне цикла в call_user_func_array в PHP

#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);