【发布时间】:2012-07-31 14:22:04
【问题描述】:
我需要循环每个$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
【问题讨论】:
标签: php arrays variable-assignment