0

我需要循环每个$message收件人(收件人是一个array),如果出现问题,unset相应的收件人:

$recipients = &$message->getRecipients(); // array

// Do this now as arrays is going to be altered in the loop
$count = count($recipients);         

for($i = 0; $i <= $count; $i++):

    $response = $messageManager->send($recipients[$i], $content);

    // If not 200 OK remove the recipient from the message
    if($response->getStatusCode !== 200) unset($recipients[$i]); 

endfor;

但是 PHP 不会让我这样做,因为“只能通过引用分配变量”。除了重新分配数组之外,我还能做些什么:

$recipients = $message->getRecipients();

// Loop

$message->setRecipients($recipients);

编辑:不能使用 foreach 并通过引用传递当前元素:

$recipients = array('a', 'b', 'c');

foreach($recipients as &$recipient)
    unset($recipient);

echo count($recipients); // 3
4

1 回答 1

-1

你可以这样做:

$recipients = $message->getRecipients();      

foreach($recipients as $key => $recipient) :

    $response = $messageManager->send($recipient, $content);
    if($response->getStatusCode !== 200) unset($recipients[$key]); 

endforeach;

$message->setRecipients($recipients);
于 2012-08-02T15:07:36.190 回答