如何将逗号分隔的电子邮件列表转换为包含键和值的数组

时间:2017-10-25 02:25:37

标签: php arrays

假设我有一个逗号分隔的电子邮件字符串,如下所示:

$var = 'a@hotmail.com,b@gmail.com,c@yahoo.com';

然后我用这样的逗号爆炸它:

$array = explode(',', $var);

然后我循环遍历数组再次通过@符号爆炸它:

$myarray = '';
foreach($array as $k=>$v){
    $array[$k] = explode('@', $v);
    $name = $array[$k][0];
    $email = $v;

    $myarray .= "'".$email."' => ";
    $myarray .= "'".$name."', ";
}

然后我删除最后一个逗号和回显结果:

$myarray = rtrim($myarray, ', ');
echo $myarray."<br>";

结果将是我想要的。

'a@hotmail.com' => 'a', 'b@gmail.com' => 'b', 'c@yahoo.com' => 'c'

但是当我尝试将它用作数组时,它不起作用。我需要将它用作这样的真实数组(这是硬编码方式,但我需要使其动态工作):

$message_object->myFunction('something', array(
  'a@hotmail.com' => 'a',
  'b@gmail.com' => 'b',
  'c@yahoo.com' => 'c'
));

如果我尝试以这种方式使用$ myarray,它会失败:

$message_object->myFunction('something', array($myarray));

那么如何才能将逗号分隔的电子邮件列表正确地转换为多维数组(我认为它被称为)?

1 个答案:

答案 0 :(得分:2)

只需将$myarray变量类型字符串更改为数组。

$myarray = array();
foreach($array as $k=>$v){
    $array[$k] = explode('@', $v);
    $name = $array[$k][0];
    $email = $v;

    $myarray[$email] = $name;
}
print_r($myarray);