导出子阵列并通过电子邮件发送每个部分



我有一个多维数组,如下所示:

数组([email1@fake.com]=>阵列([0]=>数组([asin]=>B004HFS6Z0[title]=>Kindle,Wi-Fi,Graphite,6英寸显示屏[价格]=>114.00[地图]=>125.00))[email2@fake.com]=>数组([0]=>数组([asin]=>B004CYX17O[title]=>Rizzy Home苹果10件套舒适套装,King[价格]=>502.80[地图]=>520.00))

我想做的是将电子邮件地址下的子数组导出到一个文件中,然后通过电子邮件将其发送到电子邮件地址。到目前为止,我只能将两个子数组导出到一个文件中,还无法覆盖第二个子数组的文件。

这是我正在使用的代码:

require('export-xls.class.php');
    $filename = 'email.xls';
    $xls = new ExportXLS($filename);
    $header[] = "ASIN";
    $header[] = "Title";
    $header[] = "Retail";
    $header[] = "MAP";
    $xls->addHeader($header);   
//create temp csv file and email from subarray
foreach($map_check2 as $email => $value) {
//$fp = fopen('uploads/email.csv', 'w+');
foreach($value as $subkey => $subvalue) {
    //echo $email . "<br>";
    //print_r($subvalue) . "<br>";
    //fputcsv($fp, $subvalue);
    $xls->addRow($subvalue);

}
    $xls->emailFile();
}

我需要将其导出到excel文件,并且一直在使用export-xls.class。我本可以使用csv,但数组中的值中会定期出现逗号。

emailFile()是:

    public function emailFile() {
    #build the xls
    $xls = $this->buildXLS();
    $fp = fopen("uploads/email.xls", "w+");
    fwrite($fp, $xls);
    fclose($fp);        
}

有人有什么想法吗?或者这有道理吗?

在执行$xls->addRow($subvalue)的foreach内部循环中,它似乎一直在添加所有电子邮件子数组。我认为应该在外部foreach内部但在内部foreach之前调用一些函数,以清理已经添加到$xls中的行。

这是一个我可以想到的测试运行:

  1. 第一次调用外部foreach-$email=email1@fake.com
  2. 对内部fosearch进行第一次调用-为"的每个值调用$xls->addrow()email1@fake.com"数组
  3. 调用对$xls->emailFile()的第一个调用,以w+模式打开"email.xls"并将内容写入文件
  4. 对外部foreach进行了第二次调用-$email=email2@fake.com
  5. 对内部fosearch进行第二次调用-为"email2@fake.com"array。注意-我认为在这一点上,之前在步骤2中添加到$xls的行仍然存在,这可能是问题所在。如果是,您需要在内部foreach开始之前或在$this->buildXLS()方法中进行一些清理
  6. 调用$xls->emailFile()的第二个调用,以w+模式打开"email.xls",并将内容写入包含两个子数组值的文件

我不确定$this->buildXLS()的目的是什么,在上面的解释中我忽略了它。

以上内容有道理吗?

相关内容

  • 没有找到相关文章

最新更新