假设我有一个逗号分隔的电子邮件字符串,如下所示:
$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));
那么如何才能将逗号分隔的电子邮件列表正确地转换为多维数组(我认为它被称为)?
答案 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);