Search code examples
phparraysloopsfor-loopunset

How to unset all the mail headers by array key cc and bcc in a loop in PHP?


Below is how I tried to unset all the mail header array by cc and bcc.

unset(
  $message['cc'], $message['Cc'], $message['CC'],
  $message['headers']['cc'], $message['headers']['Cc'], $message['headers']['CC'],
  $message['params']['headers']['cc'], $message['params']['headers']['Cc'], $message['params']['headers']['CC'],
  $message['bcc'], $message['Bcc'], $message['BCC'],
  $message['headers']['bcc'], $message['headers']['Bcc'], $message['headers']['BCC'],
  $message['params']['headers']['bcc'], $message['params']['headers']['Bcc'], $message['params']['headers']['BCC']
);

There are cc, Ccc, CCC, bcc, Bcc and BCC. I know the above solution is not efficient. How can I replace the above code with a shorter code using for-loop?


Solution

  • You can create an array with all the "cc" and "BCC"s and loop it.

    $items = ["cc","Cc","CC","bcc","Bcc","BCC"];
    
    Foreach($items as $item){
        Unset($message[$item],$message['headers'][$item], $message['params']['headers'][$item]);
    }
    

    Not sure if I got them all or missed one, but you get the point.