2016-06-09 56 views
0

在MongoDB中使用forEach是否有效,PHP的问题是能够为结果数组中的每个元素添加一个新行到CSV文件。可能的解决方案的一个是使用for each mongodb PHP

$数据是蒙戈光标

$records = iterator_to_array($data); 
    $file = fopen("contacts.csv","w"); 
    foreach ($records as $record){    
     fputcsv($file,$record); 
    } 

但是,整个数据加载到内存中没有一个可扩展选项,我的问题,因为数据可以是巨大的。有什么更好的选择通过某种方式能够使用forEach。如何使用的forEach与蒙戈PHP

+0

如果'$ data'是实现'Iterator'接口的对象,则可以直接在'$ data'上使用'foreach'。没有必要将其转换为简单的数组。 http://php.net/manual/en/class.iterator.php –

+0

需要在mongo db中使用forEach –

+0

我知道'$ data'是mongodb游标。你可以简单地'foreach($ data as $ record)'来迭代它。它不需要在这个阶段是一个数组,但是你可以在循环内部调用'iterator_to_array($ record)'来与'fputcsv()'一起使用,并且避免把它全部加载到内存中。 –

回答

0
$file = fopen("contacts.csv","w"); 
foreach ($data as $record){    
    $contact = iterator_to_array($record);  
    fputcsv($file,$contact); 
} 

此解决方案为$数据仍然光标和iterator_to_array()内的循环个体记录转换成阵列放置在CSV文件。