PHP:将自定义密钥对推送到数组中

时间:2015-11-12 18:13:53

标签: php arrays imap

我正在尝试使用带有PHP的imap从电子邮件中获取日期。我收到了来自收件箱的邮件并发送了邮件,然后我将它们合并在一起,但现在我需要按发送日期将它们按顺序排列。

$emailFROM = imap_search($mbox, 'FROM "'.$address.'"', SE_UID);
$emailTO = imap_search($obox, 'TO "'.$address.'"', SE_UID);
$thread = array_merge($emailFROM, $emailTO);

这就是所有消息的数组。输出如下:

Array
(
    [0] => 445
    [1] => 446
    [2] => 450
    [3] => 462
    [4] => 468
    [5] => 110
    [6] => 112
    [7] => 114
    [8] => 167
    [9] => 169
    [10] => 170
)

不幸的是,电子邮件号码和emailTO号码不对齐(emailFROM是号码445-468,emailTO是110-170)

所以现在我需要浏览每封电子邮件并查找日期,然后我想使用消息ID号作为键将日期推送到数组中

这是我到目前为止所做的:

$emailFROM = imap_search($mbox, 'FROM "'.$address.'"', SE_UID);
$emailTO = imap_search($obox, 'TO "'.$address.'"', SE_UID);
$thread = array_merge($emailFROM, $emailTO);
$full_thread = array();
foreach($thread as $single){
    $header = imap_header($mbox, $single);
    $date = $header->date;
    $full_thread[$from]=$date;
}
//Then I will arrange the array when the array works
print_r($full_thread);

但我相信这不起作用,因为它首先在数组中寻找$from id?所以,我不确定从哪里开始。

谢谢!

1 个答案:

答案 0 :(得分:0)

定义数组键而不是执行盲array_merge()似乎更为尖锐。通过这种方式,您可以根据数组项的索引访问和更新full_thread上的索引,例如:

$thread['from'] = $emailFROM;
$thread['to']   = $emailTO;

现在你的foreach循环可以保留对索引的引用。

foreach($thread as $type => $single){

然后,您可以将full_thread上的数组键定义更改为$type索引。

    $full_thread[$type]['date'] = $date;

不需要额外的['date']密钥。