正在使用while循环从TXT文件导入数据


Importing data from TXT file with while loop

我的问题是,当导入所有行时,我不知道如何完成while循环。这是Drupal 7。

如果我设置这个while条件:while ($row = $regs->fetchAssoc()),它永远不会进入循环。

如果我使用这个条件来打破循环:

  $cadena = array();
  while (1) {
  $row = $regs->fetchAssoc();
  $cadena[] = $row;
  if (count($cadena)<0){
  break;}

我得到这个错误:Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 64 bytes)

完整代码为:

 $operations = array();
 $items = array();
 $limit = 25;
 $i = 0;
$regs =  db_query("SELECT * FROM {table_import_apunte} WHERE field_processed = :processed", array(':processed' => 0));
    while ($row = $regs->fetchAssoc()) {
            if ($i < $limit) {
                $items[] = $row;
                $i += 1;
            } else {
                $operations[] = array('csvImporter_create_nodes', array($items, 'apunte'));
                $items = array();
                $items[] = $row;            
                $i = 1;
           }      
        }
        $batch = array(
        ...
        );

您使用while(1) { ... }的方法会创建一个无限循环,因为将元素附加到数组"cadena"会导致计数高于0加上计数不能低于0

你可以尝试使用foreach而不是while

foreach ($regs as $row) { ... }