我需要循环每个$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