【问题标题】:How to create a dynamic array for Mandrill API如何为 Mandrill API 创建动态数组
【发布时间】:2016-03-19 14:35:45
【问题描述】:

我想使用一个 Mandrill API 调用将一封电子邮件发送到多个电子邮件地址,这是我们只发送一个电子邮件的方法:

<?php
    $mandrill_message = array(
        // ...blah blah, doesn't matter
        // To send to only one email address:
        'to' => array(
            array(
                'email' => $the_email,
            )
        ),
        // ...blah blah, doesn't matter
    );
?>

这没关系,但是当我们想将消息发送到多个电子邮件地址时,我们必须有这个:

<?php
    $mandrill_message = array(
        // ...blah blah, doesn't matter
        // To send to more than one email:
        'to' => array(
            array(
                'email' => $email_1,
            ),
            array(
                'email' => $email_2,
            ),
            array(
                'email' => $email_3,
            ),
        ),
        // ...blah blah, doesn't matter
    );
?>

如你所见,我们重复了数组部分,现在假设我们有这个数组:

$subscribers_email = array(
    'email_1@xxx.com',
    'email_2@xxx.com',
    'email_3@xxx.com'
);

我们怎么可能让山魈代码使用$subscribers_email?当然,我们可以在 mandrill 代码中写下电子邮件地址,如下所示:

<?php
    $mandrill_message = array(
        // ...blah blah, doesn't matter
        // To send to only one amil address:
        'to' => array(
            array(
                'email' => 'email_1@xxx.com',
            ),
            array(
                'email' => 'email_2@xxx.com',
            ),
            array(
                'email' => 'email_3@xxx.com',
            ),
        ),
        // ...blah blah, doesn't matter
    );
?>

但这不是我想要的,想象一下我们需要把它变成一个动态的函数,比如:

function sendEmailToArray($subscribers_email){
        $mandrill_message = array(
            // ...blah blah, doesn't matter
            // To send to only one amil address:
            'to' => array(
                $subscribers_email
            ),
            // ...blah blah, doesn't matter
        );
    }

所以我想以动态方式制作该数组,这可能吗?

【问题讨论】:

  • 按照mandrill的要求制作$subscribers_email有什么问题。

标签: php arrays mandrill


【解决方案1】:

您可以为此使用array_walk

$subscribers_email = array(
    'email_1@xxx.com',
    'email_2@xxx.com',
    'email_3@xxx.com'
);

sendEmailToArray($subscribers_email);

function sendEmailToArray($subscribers_email){
   // Convert the array
   array_walk($subscribers_email, function(&$input){
      $input = array('email' => $input);
   });

   // Send the emails
   $mandrill_message = array(
      'to' => array($subscribers_email),
   );
}

【讨论】:

    【解决方案2】:

    您应该根据需要转换您的数组。

    使用此代码

    function sendEmailToArray($subscribers_email){
        //$subscribers_email = array(
        //    'email_1@xxx.com',
        //    'email_2@xxx.com',
        //    'email_3@xxx.com'
        //);
    
        $final_subscribers_email = array();
        foreach ($subscribers_email as $key => $value) {
            array_push($final_subscribers_email, array("email" => $value));
        }
    
        $mandrill_message = array(
            // ...blah blah, doesn't matter
            // To send to only one email address:
            'to' => $final_subscribers_email,
            // ...blah blah, doesn't matter
        );
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-04
      • 2011-10-20
      • 2015-10-16
      • 2023-03-26
      • 1970-01-01
      • 2017-12-11
      • 2015-07-15
      • 2015-01-06
      相关资源
      最近更新 更多